inblog logo
|
송승현의 블로그
    디자인패턴

    [디자인 패턴] 1. 전략 패턴

    송송승현's avatar
    송송승현
    Nov 12, 2024
    [디자인 패턴] 1. 전략 패턴
    Contents
    오류코드 전략패턴을 사용한 코드
    💡
    전략패턴은 구체적인 것을 추상화해서 의존하는 기법이다.

    오류코드

    public class Cat { String name = "고양이"; public String getName(){ return name; } } public class Mouse { String name = "쥐"; public String getName(){ return name; } } public class Doorman { public void 쫒아내(Cat cat){ System.out.println(cat.getName()+" 쫓아내"); } } public class App { public static void main(String[] args) { Doorman doorman = new Doorman(); Cat cat = new Cat(); doorman.쫒아내(cat); } }

    이 코드의 문제

    • Doorman 클래스는 오로지 Cat 객체만 쫓아내는 쫓아내 메서드를 들고 있음. Mouse 등 다른 동물 객체를 쫓아내고 싶으면 매번 쫓아내 메서드를 새로 정의해야함.
     

    전략패턴을 사용한 코드

    abstract class Animal { abstract String getName(); } public class Mouse extends Animal { String name = "쥐"; public String getName(){ return name; } } public class Cat extends Animal { String name = "고양이"; public String getName(){ return name; } } //SRP -> Single Responsibility Principal public class Doorman { public void 쫒아내(Animal animal){ //DIP -> Dependency Inversion Principle 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.쫒아내(mouse); doorman.쫒아내(cat); } }

    전략패턴 사용

    • 추상 클래스로 Animal 클래스를 생성하여 Cat, Mouse 클래스에 상속
    • Doorman 클래스는 Animal 추상 클래스를 통해 Cat, Mouse를 쫓아낼 수 있다.
     
    Share article
    Contents
    오류코드 전략패턴을 사용한 코드

    송승현의 블로그

    RSS·Powered by Inblog