전략패턴은 구체적인것을 추상화해서 의존하는 기법이다.
1. 잘못된 코드
문지기가 고양이(Cat)에 의존하기 때문에, 쥐(Mouse)로 변경하면 기존 코드를 수정해야 한다. OCP위배
package ch01;
//SRP -> Single Responsibility Principle 단일 책임
public class Doorman {
//해당 클래스의 책임
public void 쫒아내(Cat cat){
System.out.println(cat.getName() + " 쫒아내");
}
}
package ch01;
public class Cat {
private String name = "고양이";
public String getName() {
return name;
}
}
package ch01;
// 쥐 Object
public class Mouse {
private String name = "쥐";
public String getName() {
return name;
}
}
2. 좋은 코드
package ch01;
public abstract class Animal {
public abstract String getName();
}
--------------------------------------
package ch01;
public class Cat extends Animal{
private String name = "고양이";
public String getName() {
return name;
}
}
--------------------------------------
package ch01;
// 쥐 Object
public class Mouse extends Animal{
private String name = "쥐";
public String getName() {
return name;
}
}
--------------------------------------
package ch01;
public class Doorman {
//해당 클래스의 책임
public void 쫒아내(Animal animal){
System.out.println(animal.getName() + " 쫒아내");
}
}
--------------------------------------
package ch01;
public class App {
public static void main(String[] args) {
Doorman doorman = new Doorman();
Cat cat = new Cat();
Mouse mouse = new Mouse();
doorman.쫒아내(cat);
doorman.쫒아내(mouse);
}
}
Share article