在复合模式中主要以综合运用之前学习的几种模式为目的,包括策略模式-适配器模式-装饰者模式-抽象工厂模式-组合模式-观察者模式
其中以观察者模式比较复杂。
主要实现功能:当被观察者发生quack()方法时会自动通知观察者,且会统计叫声次数。
/*
* 1 实现Quack接口的鸭子们使用的策略模式,作为一种武器* 2 实现Quack接口的鹅是通过适配器模式把鹅传进去 使用相同的接口完成不同的方法,也方便使用多态
* 3 使用装饰着模式来拓展功能 比继承要好(类似IO保留原来的功能) 此处加上计数功能
* 4 使用抽象工厂生产带有装饰着鸭子,使用工厂模式把new的过程全部封装起来,外面创建对象只需要调用对应方法即可
* 5 使用组合模式可以像对待一个对象一样对待集合 即叶节点和组合都要实现同一个接口以完成相同的工作
* 6 使用观察者模式可以观察个别对象的行为,此处为观察者想要观察个别鸭子的行为,注意鸭子需要委托一个observable来通知观察者
*/
下面分开按照模式来详细拆分代码:
1 策略模式
所有的鸭子都要实现Quackble接口来实现quack方法,每一个鸭子都要实现,此处Quackble又继承QuackObservable,是因为鸭子是一个被观察者,也要实现注册观察者和通知观察者的方法,只不过这里鸭子是委托给专门的类去做这件事,在后面观察者模式会被详细提到。
MallardDuck使用策略模式
<