[디자인 패턴] 전략패턴

Stupefyee's avatar
Nov 12, 2024
[디자인 패턴] 전략패턴
💡
전략패턴은 구체적인것을 추상화해서 의존하는 기법이다
 

1. 잘못된 코드

public class Doorman { public void 쫓아내(Cat cat) { System.out.println(cat.getName() + " 쫓아내"); } }
Doorman.java
public class Cat { private String name = "고양이"; public String getName() { return name; } }
Cat.java
public class Mouse { private String name = "쥐"; public String getName() { return name; } }
Mouse.java
public class App { public static void main(String[] args) { Doorman doorman = new Doorman(); Cat cat = new Cat(); doorman.쫓아내(cat); } }
App.java
💡
쥐를 쫓아내는 걸로 바꾸려면 Doorman.java를 바꿔야 한다.
 

2. 좋은 코드

💡
추상 클래스를 하나 만들어서 의존성을 추가한다.
public abstract class Animal { public abstract String getName(); }
Animal.java
package ch01; public class Cat extends Animal { private String name = "고양이"; public String getName() { return name; } }
의존성이 추가된 Cat.java
public class Mouse extends Animal{ private String name = "쥐"; public String getName() { return name; } }
의존성이 추가된 Mouse.java
public class Doorman { public void 쫓아내(Animal animal) { System.out.println(animal.getName() + " 쫓아내"); } }
특정 동물을 받는게 아니라 Animal이라는 추상메소드를 호출하여 받는 Doorman.java
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); } }
수정된 App.data
💡
고양이 쫓아내 쥐 쫓아내
 
Share article

stupefyee