HeadFirst 多种模式组合使用
我们要通过一个例子把前边学习过的设计模式串一遍,以一种需求不断叠加的实际工作场景为背景。首先我们还是把我们第一个模式所举的鸭子的例子搬出来,我们要创建一个模拟器对这些鸭子的叫声进行模拟:
首先我们设计一个呱呱叫的接口:
public interface Quackable { public void quack(); }public class MallardDuck implements Quackable { public void quack() { System.out.println("Quack"); } }public class RedheadDuck implements Quackable { public void quack() { System.out.println("Quack"); } }public class DuckCall implements Quackable { public void quack() { System.out.println("Kwak"); } }public class RubberDuck implements Quackable { public void quack() { System.out.println("Squeak"); } }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(); } }