인터페이스를 이용한 추상화 와 다른 객체에 기능을 위임하는 델리게이트 를 사용한다.
- 즉, 하나의 기능(전략)에 대해서 추상화한 인터페이스를 이용한다.
- 인터페이스의 구현클래스를 이용하여 Target 에서 기능을 자유롭게 바꿔서 사용한다. ( 다형성 )
중요한 점은 하나의 갈아끼울 전략을 정해놓고 추상화하는 것에 있어보임.
Account 클래스에서 Todo 인터페이스를 필드로 사용하여 Todo 의 doSomething() 메서드를 호출하게 되어 있다.
- Interface 에 의한 추상화로 Strategy 를 잡는다.
- 다형성을 이용하여 다양한 부품을 끼워 넣는다.
- Todo를 의존하는 클래스에서 메서드 기능실행을 Todo 인터페이스 구현체에 위임한다.
public class Main {
public static void main(String[] args) {
Account account = new Account();
Todo todoA = new TodoA();
account.setName("Soomin");
account.setAge(28);
account.setTodo(todoA);
account.doSomething();//기상하고 책장을 정리합니다.
account.setTodo(new TodoB());
account.doSomething();//고양이와 놀아줍니다.
account.setTodo(new TodoC());
account.doSomething();//자바에 대해 공부합니다.
account.setTodo(() -> {
System.out.println("자바 디자인 패턴에 대해 공부합니다.");
});
account.doSomething();//자바 디자인 패턴에 대해 공부합니다.
}
}
public class Account {
private String name;
private int age;
private Todo todo;
public void doSomething(){
todo.doSomething();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Todo getTodo() {
return todo;
}
public void setTodo(Todo todo) {
this.todo = todo;
}
}
'Design Pattern' 카테고리의 다른 글
Prototype (0) | 2020.11.29 |
---|---|
SingleTon Pattern (0) | 2020.11.24 |
Factory Method (0) | 2020.11.24 |
Template Method (0) | 2020.11.23 |
Adapter (0) | 2020.11.23 |