复合模式1:简单的复合模式
复合模式在一个解决方案中结合两个或多个模式,以解决一般或重复发生的问题。
1. 面向接口编程
2. 适配器加入
3. 装饰器加入
4. 抽象工厂加入
5. 组合加入
6. 观察者加入
1. 面向接口编程
2. 适配器加入
当鸭子出现的附近,鹅也应该在附近,我们设计了一个鹅类
鹅其实是和鸭子差不多的,我们想在所有使用鸭子的地方使用鹅。
我们需要鹅适配器,将鹅转换为Quackable接口
所以呢,我们同样的可以像对待鸭子一样使用鹅了。
3. 装饰器模式
如果我们想要记录所有Quackable类叫的次数,我们创建一个装饰者,通过装饰鸭子,每次鸭子一叫就记录鸭子叫声的次数,记住因为用了适配器,所以也能装饰鹅。
所以我们可以用如下代码,简单更新一下,
4. 抽象工厂加入
为什么我们不将创建鸭子的程序集中在一个地方呢?
让我们创建鸭子工厂和鸭子适配器工程
5. 加入组合模式
如果我们呢,想管理一群鸭子,可以采用组合模式,我们设置一个接口,既可以表示鸭子组合也可以鸭子群体
6. 观察者加入
如果科学家想要观察个别鸭子的行为,我们需要加入观察者模式,其中每一个鸭子都是一个被观察者,然后科学家是观察者。
我们先定义一个被观察者接口
其实本来呢,每个鸭子类都应该实现Quackable接口,但是为了简化代码,但是此时我们定义另外一个类,让鸭子类去组合这个类,然后去通知科学家。
几乎快完成了,我们此时加入Observer的类实现
由此我们开始观察啦
问题1:这是复合模式?
不是的,这只是一堆模式携手合作,复合模式是指一堆模式组合起来以解决一般性的问题;
问题2:我遇到问题,可以拿模式的逐一的解决问题,这样可以吗?
不可以,一般的设计不需要这么做,用好的OO设计原则就可以了。