GRASP(General Responsibility Assignment Software Patterns),中文名称为“通用职责分配软件模式”,共包括9种模式,它们描述了对象设计和职责分配的基本原则
-
Information Expert (信息专家) 设计对象(类)的时候,如果某个类拥有完成某个职责所需要的所有信息,那么这个职责就应该分配给这个类来实现 ——>就是我们通常拿到一个需求时,所要考虑的这个界面或者某个接口所涉及的属性而产生的一个类
-
Creator (创造者) 如果一个类创建了另一个类,那么这两个类之间就有了耦合,也可以说产生了依赖耦合关系。 ——>就是说类的创建要相当谨慎,否则在以后的维护中会产生连锁反应。
-
Low coupling (低耦合) 尽可能地减少类之间的连接。 ——>尽量让一个类单一,而不是依赖于另一个类涉及单一职责、迪米特法则
-
High cohesion (高内聚) 给类尽量分配内聚的职责,功能性内聚的职责,发挥类的最大性能 ——>让一个类做自己擅长的功能
-
Controller (控制器) 用来接收和处理系统事件的职责,一般应该分配给一个能够代表整个系统的类,命名为“XX处理器”、“XX协调器”
-
Polymorphism (多态) 涉及里氏置换原则
-
Pure Fabrication (纯虚构) 内聚和耦合永远都是矛盾对立,解决这个矛盾呢,这个时候就需要由一个纯虚构的类来协调内聚和耦合 ——> 虚构的类可以是抽象的类、或者接口。涉及多态
-
Indirection (间接) ”两个不同模块的内部类之间不能直接连接”,但是我们可以通过中间类来间接连接两个不同的模块 ——>在类的协作上加上一层润滑剂,面向接口编程,避免类与类接触,不需要知道彼此是谁,只听从调度即可,涉及里氏置换原则、依赖倒置原则
-
Protected Variations (受保护变化) 预先找出不稳定的变化点,使用统一的接口封装起来,如果未来发生变化的时候,可以通过接口扩展新的功能,而不需要去修改原来旧的实现 ——> 涉及开放关闭原则
设计模式的六大原则:
1.单一职责原则 类只管好自己
2.开放关闭原则 不让修改可以扩展
3.里氏替换原则 将一个基类对象替换成它的子类对象,程序将不会产生任何错误和异常,反过来则不成立
4.依赖倒置原则 面向抽象、接口编程。而不是面向细节编程
5.接口隔离原则 每一个接口应该承担一种相对独立的角色,也就是单一职责原则,而不是一个接口干所有的事
6.迪米特法则 不要和陌生人说话,降低类与类之间的耦合依赖度,尽可能少的与其它类发生交互