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(); } }