设计模式(七)小总结
一连6篇,共12种设计模式已经介绍完了,其实这些都是最基本的模式,但也是最重要的模式,因为外面其它各种的模式比较多是从这些基础的模式上进行变体所得的。
虽然本系列是使用Java实现,但与其它语言的思路是共通的,只是可能其它语言有更好的语法或API帮助模式的实现而会有些许不一样而已。
希望后面还能继续在这介绍上更大领域上的设计模式,例如应用模式、业务流程模式、用户界面设计模式、组织模式、架构模式等等。
现在来做一个简单的回顾总结。
基础的模式
- 策略模式(Strategy):封装可以互换的行为,并使用委托来决定要使用哪一个(委托即是一实例对象)。
- 装饰者模式(Decorator):包装一个对象,以提供新新的行为。
- 适配器模式(Adapter):封装对象,并提供不同的接口。
- 外观模式(Facade):简化一群类的接口。
- 命令模式(Command):封装请求成为对象。
- 状态模式(State):封装了基于状态的行为,并使用委托在行为之间切换。
- 模板方法模式(TemplateMethod):由子类决定如何实现一个算法中的步骤。
- 迭代器模式(Iterator):在对象的集合之中游走,而不暴露集合的实现。
- 组合模式(Composite):客户用一直的方式处理对象集合和单个对象。
- 工厂方法模式(FatoryMethod):由子类决定要创建的具体类是哪一个。
- 抽象工厂模式(AbstractFatory):允许客户端创建对象的家族,而无需指定他们的具体类。
- 观察者模式(Observer):让对象能够在状态改变时被通知。
- 代理模式(Proxy):包装对象,以控制对此对象的访问。
其它的模式
- 单例模式(Singleton)(在本系列中它没有出现,因为这个模式算是家喻户晓,不过使用时还是有一些注意点的,例如线程安全,如何实现更高效等)
- 桥接模式(Bridge)
- 生成器模式(Builder)
- 责任链模式(ChainOfResponsibility)
- 蝇量模式(Flyweight)
- 解释器模式(Interpreter)
- 中介者模式(Mediator)(在我们iOS的工程中就使用到这个模式,来建立起一个调度中心去控制不同组件间的相互访问)
- 备忘录模式(Memento)
- 原型模式(Prototype)
- 访问者模式(Visitor)
还有大名鼎鼎的MVC,它其实是一种复合模式。视图(View)和控制器(Controller)实现了策略模式,视图通过更换控制器改变行为;视图则采取组合模式来构建整体,例如窗口就是组合节点,按钮等就是叶节点;模型则实现了观察者模式,当状态改变时,相关的对象将持续更新,例如视图刷新(但iOS的多数例子中并不提倡这样直接通知视图,而是先通知控制器,由控制器改变视图)。
模式分类
- 创建型
- Singleton
- AbstractFatory
- FatoryMethod
- Prototype
- Builder
- 行为型
- TemplateMethod
- Iterator
- Command
- Observer
- State
- Strategy
- Mediator
- Visitor
- Memento
- Interpreter
- ChainOfResponsibility
- 结构型
- Decorator
- Composite
- Facade
- Proxy
- Adapter
- Flyweight
- Bridge
设计原则
- 封装变化
- 多用组合,少用继承
- 针对接口编程,不针对实现编程
- 为交互对象之间的松耦合设计而努力
- 类应该对扩展开放,对修改关闭
- 依赖抽象,不要依赖具体类
- 只和朋友交谈
- 别找我,我会找你
- 类应该只有一个改变的理由
注意实际应用中,不要为了使用模式而使用,要使用满足需求的最简单解决方案。大多数的模式都是现有模式的变体,而非新模式,我们也能够依据自己的需要采用或调整。
最后
感谢《Head First》这本书的作者,列出那么多生动有趣的案例和解释,每个章节中都有拿相似模式进行对比说明,由浅入深的介绍通俗易懂,让我们喜欢上设计模式,喜欢上对优雅代码的追求。
本系列的代码地址:戳这里
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 mingfungliu@gmail.com
文章标题:设计模式(七)小总结
文章字数:1.1k
本文作者:Mingfung
发布时间:2019-02-12, 14:45:00
最后更新:2019-02-12, 16:04:50
原始链接:http://blog.ifungfay.com/设计模式/设计模式(七)小总结/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。