inblog logo
|
stupefyee
    디자인패턴

    [디자인 패턴] 전략패턴

    Stupefyee's avatar
    Stupefyee
    Nov 12, 2024
    [디자인 패턴] 전략패턴
    Contents
    1. 잘못된 코드2. 좋은 코드
    💡
    전략패턴은 구체적인것을 추상화해서 의존하는 기법이다
     

    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
    Contents
    1. 잘못된 코드2. 좋은 코드

    stupefyee

    RSS·Powered by Inblog