Design Pattern

Strategy

Jungsoomin :) 2020. 11. 23. 19:41

인터페이스를 이용한 추상화 와 다른 객체에 기능을 위임하는 델리게이트 를 사용한다.

 

  • 즉, 하나의 기능(전략)에 대해서 추상화한 인터페이스를 이용한다.
  • 인터페이스의 구현클래스를 이용하여 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