- 设计模式是对软件设计中普遍存在及反复出现的各种问题所提出的解决方案(对某类问题的通用解决方案,代表了==最佳的实践==)
- 本质:提高软件的维护性、通用性和扩展性,降低软件的复杂度
- 设计模式位于软件中:[面向对象oo]=>功能模块[设计模式+算法(数据结构)]=>框架[多种设计模式]=>架构[服务器集群]
- 为了让程序具有更好的
- 代码可用性:相同功能的代码不需要多次编写
- 可读性:编程规范性,便与其他程序员的阅读和理解
- 可扩展性/可维护性:当需要增加新的功能时非常方便
- 可靠性:当增加新功能后对原有功能无影响
- 使得程序符合高内聚,低耦合(A出现问题对B的影响很小)的特征
-
单一职责原则(Single Responsibility Principle)
- ==一个class只应该负责一个职责==
- 需要注意的事项和细节
- 降低类的复杂度(==核心==),
- 提高class的可读性与可维护性
- 降低变更代码引起的而风险
- 只有在逻辑足够简单的情况下才可以违背单一职责原则
-
接口隔离原则(Interface Segregation Principle)
- 客户端不应该依赖(使用)其不需要的接口(一个class对另一个class的依赖应该建立在最小的接口上)
- 对应文件:segregation
-
依赖倒转原则(Dependence Inversion Principle)
- 高层模块不应该依赖低层模块,二者都应依赖其抽象(抽象类or接口)
- 抽象不应依赖细节,细节应该依赖抽象
- 依赖倒转的中心思想是面向接口编程
-
里式替换原则
-
开闭原则
-
迪米特法则
-
==合成复用原则==
- 单例模式
- 抽象工厂模式
- 原型模式
- 建造者模式
- 工厂模式
- 适配器模式
- 桥接模式
- 装饰模式
- 组合模式
- 外观模式
- 享元模式
- 代理模式
- 模板方法模式
- 命令模式
- 访问者模式
- 迭代器模式
- 观察者模式
- 中介者模式
- 备忘录模式
- 解释器模式(Interpreter模式)
- 状态模式
- 策略模式
- 责任链模式
- 简单工厂模式:是由一个工厂对象决定创建出哪一种产品类的实例,定义了一个创建对象的类,由这个类来封装实例化对象的行为(代码)
- 当需要用到大量的创建某种、某类或者某批对象时就会用到工厂模式
Example: Pizza
Requirement: 便于pizza种类的扩展以及维护
- Pizza的种类有很多(比如GreekPizz, CheesePizz etc.)
- Pizza的制作有prepare, bake, cut, box
- 完成Pizza店订购功能
- 是行为型模式
- 如果几何元素是使用不同方式实现的,