inblog logo
|
goho
    디자인패턴

    [디자인패턴]전략패턴

    gov's avatar
    gov
    Nov 12, 2024
    [디자인패턴]전략패턴
    Contents
    사용 이유1. 잘못된 코드2. 좋은 코드
    💡
    실행 중 알고리즘을 선택할 수 있게 하는 행위 객체가 수행하는 동작을 외부 여러 전략으로 분리하여, 실행 시점에 동작 선택 가능

    사용 이유

    • 동작의 분리
      • 비슷한 기능이라도 구체적인 알고리즘이 다르기에, 코드 중복을 줄이면서 동작을 따로 정의
    • 유연성 향상 새로운 동작을 추가하거나 기존 동작을 변경할 때 유연하게 대처가능

    1. 잘못된 코드

    public class App { public static void main(String[] args) { Doorman doorman = new Doorman(); Cat cat = new Cat(); doorman.쫓아내(cat); } } // SRP -> Single Responsibility Principle 클래스는 단일책임을 가져야 한다 public class Doorman { public void 쫓아내(Cat cat) { System.out.println(cat.getName() + " 쫓아내"); } } public class Mouse { private String name = "쥐"; public String getName() { return name; } } public class Cat { private String name = "고양이"; public String getName() { return name; } }

    2. 좋은 코드

    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); } } public abstract class Animal { public abstract String getName(); } // SRP(Single Responsibility Principle) 클래스는 단일책임을 가져야 한다 public class Doorman { // DIP(Dependency Inversion Principle) 추상적인 의존(변화하지 않는 것에 의존) public void 쫓아내(Animal animal) { System.out.println(animal.getName() + " 쫓아내"); } } public class Mouse extends Animal { private String name = "쥐"; @Override public String getName() { return name; } } public class Cat extends Animal { private String name = "고양이"; @Override public String getName() { return name; } }
     
    Share article

    goho

    RSS·Powered by Inblog