전략패턴은 구체적인것을 추상화해서 의존하는 기법이다
1. 잘못된 코드
public class Doorman {
public void 쫓아내(Cat cat) {
System.out.println(cat.getName() + " 쫓아내");
}
}
public class Cat {
private String name = "고양이";
public String getName() {
return name;
}
}
public class Mouse {
private String name = "쥐";
public String getName() {
return name;
}
}
public class App {
public static void main(String[] args) {
Doorman doorman = new Doorman();
Cat cat = new Cat();
doorman.쫓아내(cat);
}
}
쥐를 쫓아내는 걸로 바꾸려면 Doorman.java를 바꿔야 한다.
2. 좋은 코드
추상 클래스를 하나 만들어서 의존성을 추가한다.
public abstract class Animal {
public abstract String getName();
}
package ch01;
public class Cat extends Animal {
private String name = "고양이";
public String getName() {
return name;
}
}
public class Mouse extends Animal{
private String name = "쥐";
public String getName() {
return name;
}
}
public class Doorman {
public void 쫓아내(Animal animal) {
System.out.println(animal.getName() + " 쫓아내");
}
}
public class App {
public static void main(String[] args) {
Doorman doorman = new Doorman();
Mouse mouse = new Mouse();
Cat cat = new Cat();
doorman.쫓아내(cat);
doorman.쫓아내(mouse);
}
}
고양이 쫓아내
쥐 쫓아내
Share article