模式是在特定环境下人们解决某类重复出现问题的一套成功或有效的解决方案。
软件模式:在一定条件下的软件开发问题及其解法。
目的:为了可重用代码、让代码更容易被他人理解、提高代码可靠性(设计复用)
设计模式的基本要素:模式名称、问题、目的、解决方案、效果。实例代码和相关的设计模式。
4个关键要素:
- 模式名称(Pattern Name) :抽象描述一个设计
- 问题(Problem) :描述了庒用场景,可以解决哪些问题
- 解决方案(Solution) :设计的细节,给出原理图示(参不者、
类图、时序图、程序示例等) - 效果 (Consequences) :优缺点。面向软件的质量属性,如可
扩展性、可复用性
设计模式的分类:
1.根据目的(模式是用来做什么的)可分为
• 创建型模式主要用于创建对象
• 结构型模式主要用于处理类或对象的组合
• 行为型模式主要用于描述类或对象如何交互和怎样分配职责
2.根据范围(即模式主要是处理类之间的关系还是处理对象之间的
关系),可分为
类模式:处理类和子类之间的关系 继承 静态
对象模式:处理对象间的关系 关联 动态性
GoF设计模式简介(23种)
面向对象编程优点:
可维护(Maintainability)
可复用(Reusability)
可扩展(Extensibility)
灵活性(Flexibility)
面向对象的三大特性:
封装
继承
多态
OOP编程七大原则:
——职责要单一(仅有一个引起它变化的原因)
单一职责原则好处:
类的复杂性降低,实现什么职责都有清晰明确的定义;
可读性提高;
可维护性提高;变更引起的风险降低;
单一职责适用于接口设计、类的设计、方法的设计
——总原则 ,对扩展开放,对修改关闭
开闭原则的关键:抽象化
设计模式优缺点评价的重要依据,判断基于该模式设计的系统是否具有良好的灵活性和可扩展性。
——继承 (所有引用基类的地方必须能透明地使用其子类的对象)
*****正方形/长方形问题不符合里氏替换原则
改进:构造一个抽象的四边形类
—— 针对抽象编程(抽象不应该依赖于细节,细节应该依赖于抽象)
针对抽象层编程,将具体类的对象通过依赖注入(Dependency Injection,
DI)的方式注入到其他对象:
构造注入
设值注入(Setter注入)
接口注入(通过参数传入)
关系:
开闭原则是目标,里氏代换原则是基础,依赖倒转原则是途径,相辅相成。
——接口细化
与单一职责角度不同:
单一职责要求类和接口职责单一,注重业务逻辑划分的职责
接口隔离要求接口的方法尽量少
接口隔离原则是对接口进行规范:4层含义
- 接口要尽量小,不臃肿。
- 接口要高内聚。
- 定制服务。
- 接口的设计是有限度的。
——复用时要尽量使用组合/聚合关系(关联关系,少用继承
合成/聚合复用的优点:
该复用支持封装;
该复用所需的依赖较少;
每个新的任务可将焦点集中在一个任务上。
合成/聚合复用的缺点:
通过这种复用建造的系统会有较多的对象需要管理;
为了能将多个不同的对象作为组合块来使用,必须仔细地对接口迚行定义
——尽可能少地与其他实体发生相互作用
对于一个对象,其朋友包含:
- 当前对象本身;
- 以参数形式传入到当前对象方法中的对象;
- 当前对象的成员对象;
- 如果当前对象的成员对象是一个集合,集合中的元素也是朋友;
- 当前对象所创建的对象。
迪米特法则根本思想强调类之间的松耦合



