패턴 섞어 쓰기

<aside> 🎨 복합 패턴 반복적으로 생길 수 있는 일반적인 문제를 해결하는 용도로 2개 이상의 패턴을 결합해서 사용하는 것

</aside>

오리 시뮬레이터 게임에 다양한 패턴 적용하기

Quackable 인터페이스를 만든다.

public interface Quackable {
		public void quack();
}

Quackable 을 구현해서 오리 클래스를 만든다.

public class MallardDuck implements Quackable {
		public void quack() {
			System.out.println("꽥꽥");
		}
}

public class RedheadDuck implements Quackable {
		public void quack() {
				System.out.println("꽥꽥");
		}
}

public class DuckCall implements Quackable {
		public void quack() {
				System.out.println("꽉꽉");
		}
}

public class RubberDuck implements Quackable {
		public void quack() {
				System.out.println("삑삑");
		}
}

시뮬레이터를 만들어 테스트

public class DuckSimulator {
    public static void main(String[] args) {
        DuckSimulator simulator = new DuckSimulator();
        simulator.simulate();
    }

    void simulate() {
        Quackable mallardDuck = new MallardDuck();
        Quackable redheadDuck = new RedheadDuck();
        Quackable duckCall = new DuckCall();
        Quackable rubberDuck = new RubberDuck();

        System.out.println("\\nDuck Simulator");

        simulate(mallardDuck);
        simulate(redheadDuck);
        simulate(duckCall);
        simulate(rubberDuck);
    }

    void simulate(Quackable duck) {
        duck.quack();
    }
}