通用职责分配软件模式

来源:互联网 发布:js中prompt的用法 编辑:程序博客网 时间:2024/05/28 20:20

  文/李智慧

 

相对于GoF设计模式,通用职责分配软件模式GRASP更像一种设计思想或原则。GRASP的9个模式企图解决的问题只有一个:怎样将建模(静态模型),也就是怎样设计我们的对象,一个系统应该有多少个对象,每个对象应该包括哪些功能,不应该包括哪些功能,对象之间应该建立怎样的关系。通用职责分配软件模式,顾名思义,一个对象应该实现哪些功能由其承担的职责决定,即职责驱动对象设计。
 
1、Information Expert (信息专家)
如果某个对象拥有完成某个职责所需要的所有信息,那么这个职责就应该分配给这个对象来实现。这时,这个对象就是相对于这个职责的信息专家。反过来也成立,如果要给一个对象分配某一个职责,那么这个对象必须拥有完成这个职责的全部信息。这也是面向对象的基本思想:把数据和关于数据的操作集成在一个对象里。
 
2、Creator (创造者)
实际应用中,符合下列任一条件的时候,都应该由对象A来创建对象B,这时A是B的创建者:
1.        A是B的聚合
2.        A是B的容器
3.        A持有初始化B的信息(数据)
4.        A记录B的实例
5.        A频繁使用B
3、Low coupling (低耦合)
低耦合的意思是降低代码、对象、模块、子系统之间的耦合度。低耦合的代码更容易维护,低耦合的组件更容易复用,低耦合的系统更容易扩展,软件技术的发展主要都是围绕降低软件的耦合度进行的。
 
4、High cohesion (高内聚)
高内聚的意思是在一段代码、一个对象、一个模块,一个子系统内聚合尽量多的功能,高内聚的对象通常更加强大。高内聚的最高境界是一个函数完成一个系统,一根面条煮一锅面。
 
5、Controller (控制器)
就是MVC模式中的控制器。一个系统中应该有一个对象来接收所有外界的请求和分发所有系统的响应,这个对象就是控制器。
 
6、Polymorphism (多态)
就是利用OO技术中的多态,在运行期随类型改变表现不同的行为。
 
7、Pure Fabrication (纯虚构)
就是面向接口编程。具体实现是接口的实现,外部访问通过接口进行。
 
8、Indirection (间接)
为两(多)个高耦合的对象之间增加一个中介者(mediator),对象之间的交互通过Mediator进行,使耦合对象不再直接耦合(都和Mediator耦合了)。
 
9、Protected Variations (受保护变化)
一个软件实体(代码段,类,模块,子系统)的改变应该是受保护的,其改变不应该通过修改实现,而是通过扩展实现(在已定义的接口上实现新的对象完成扩展,因此要求在设计接口的时候要充分考虑将来的扩展需求)。
 
  
原创粉丝点击