设计模式简介
设计模式的本质是在已有的方案之上发现更好的方案(而不是全新发明);是指软件设计问题的推荐方案。一般是描述如何组织代码和使用最佳时间来解决常见的设计问题。
谨记在心的一点:设计模式是高层次的方案,并不关注具体的实现细节;对于要解决的问题,何种算法和数据结构最优,则是由软件工程师自己把握。
软件的复杂程度分为两个层面:业务逻辑复杂度和代码实现复杂度。 对同一个业务系统,不同的软件开发人员会有不同的实现,复杂度也不同;相应地,实现的易理解性;可维护性和可扩展性也不同,
软件人员应该不断学习如何控制该软件的复杂度;学习并恰当地使用设计模式是应对软件复杂度的有效方法。
设计模式并非固定不变 1、新的软件工程问题随之出现 2、新的语言、新的平台会把一些常见设计模式吸收为内置特性
创建型模式:对象创建
工厂模式 # 与直接实例化对象,使用工厂模式的优势
创建者模式 # 对于由多个对象构成的对象,如何简化创建过程
原型模式 # 完全复制一个对象
单例模式 ---> 反模式
行为型模式:处理系统实体之间通信
责任链模式 # 如何向多个接受者发送请求
命令模式 # 如何让应用能够取消已经执行的操作
解释器模式 # 如何基于python创建一种简单语言,便于领域专家使用,而无需学习python编程
迭代器模式 #
中介者模式 #
备忘录模式
观察者模式 # 如何在对象发生变化时,通知已注册的相关者
状态模式 # 如何创建一个状态机已对问题进行建模,并说明这种技术的优势
策略模式 # 如何基于某些输入标准在程序运行期间从多个算法中选择一个
访问者模式 #
模板模式 # 如何明确区分一个算法的通用与不通用部分,以避免不必要的代码复制
结构性模式:不同实体之间的关系
适配器模式 # 如何以最小的改变实现已有代码与外来接口的兼容
桥模式 #
组合模式
修饰器模式 # 如何无需使用继承也能增强对象的功能
外观模式 # 如何创建单个入口来隐藏系统复杂性
享元模式 # 如何通过复用一个对象池中的对象来提高内存利用率及应用性能
模型-视图-控制器模式 #如何避免业务逻辑与用户界面代码的耦合,提高应用的可维护性
代理模式 # 如何增加额外的保护层,提高应用安全性