一、复合模式
模式常一起使用,组合在一个设计解决方案中
复合模式在一个解决方案中结合两个或多个模式,能解决一般性或一系列的问题

二、示例
本次设计模式讲解中无代码示例,由于复合模式是多个模式的组合,因此可以灵活运用前几篇文章中的设计模式思路
例如有一个复杂的鸭子项目:
- 多种鸭子,不同鸭子叫声、飞行、游泳方式不同 —— 策略模式
- 鹅,需要加入几只普通的鹅 —— 适配器模式
- 要统计鸭子叫声的次数 —— 装饰者模式
- 统一产生鸭子 —— 工厂模式
- 要管理一群鸭子 —— 组合模式(迭代器)
- 追踪某个鸭子的行为 —— 观察者模式
以上一个鸭子项目就可以结合之前文章中的多种模式完成需求,感兴趣的同学可以完成编码示例
三、MVC里的模式
我们熟知的MVC架构就是一个经典的复合模式
-
MVC:Model、View、Controler
- Model:是程序主体,代表了业务数据和业务逻辑
- View:是与用户交互的界面,显示数据、 接收输入,但不参与实际业务逻辑
- Controler:接收用户输入,并解析反馈给 Model
-
MVC里的模式:
- Model与View和Controler是观察者模式
- View以组合模式管理控件
- View与Controler是策略模式关系, Controler提供策略
-
Android开发中的复合模式
- 整体结构上市MVC模式
- 生命周期 —— 模板模式
- 广播 —— 观察者模式
- 列表View —— 模板
四、总结
在形式上,复合模式确实是多个模式的组合,但满足了这一条并不一定是复合模式,注意它的定义:将多个模式结合起来形成一个“框架”,以解决一般性问题
Java设计模式所有示例代码,持续更新中
网友评论