전략패턴

김인범's avatar
Nov 12, 2024
전략패턴
전략패턴은 구체적인것을 추상화해서 의존하는 기법이다.

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

taker