General responsibility assignment software patterns 简称GRASP 翻译是通用职责分配软件模式,不同于GOF的23中设计模式那么具体到场景和解决方案。它是通用概括讲解如何设计类和对象之间的关系。和如何给类和对象分配对应的职责。其实面向对象最难、最核心和最有争议的的点就是如何设计类和对象的职责,类和对象之间的怎么联系。
其中一共是9个设计原则,控制器,创造者,信息专家,高内聚、低耦合、多态,受保护变化,中介和纯虚构。
1.控制器模式:
控制器类是将接受事件并且将处理这个事件的责任分配给可以处理这个事件的对象,当然这里要参数交互要用接口或者是抽象类。这个控制类的职责一定是单一的,只能有分配、和协调的工作。这种大的模式比如说MVC模式中的控制器,将请求分配给处理者,GOF里面的模式比说是命令模式就是非常典型的控制模式。这种模式关键的两点一个是,接口要开发,要抽象。事件和处理者之间的联系的这个配置一定要简单,并且低耦合。
2.创造者模式:
一个类创建了另一个类,这样这两个类就产生了依赖关系。一般来说就是以下几种情况需要有创建者模式,
(1)B对象的实例化依赖A对象的信息。
(2)B对象是A对象的容器,比如spring里面bean和上下文的关系
(3)B对象和A对象关系非常紧密
(4)B 是A的聚合和复合
3.信息专家模式:
用来确定在哪里委派责任。这些职责包括方法,计算字段,等等。这个就是分配职责的时候,就是应该分给完成这个任务或者事件的拥有的元素最多,这个职责就应该分配给它。
4.高内聚:
高内聚是描述类的责任的。其实就是责任细化,彼此之间完成这个责任模块没有依赖,非常容易复用,就是职责的单一、具体、细化的过程。做到高内聚非常麻烦,越是高内聚的系统和类就说明,类的内容很小,这个系统类就会很多。
5.低耦合:
低耦合是描述对象之间的关系的。低耦合就是,两个有关系的类,类里面不管怎么变动,对于那个类的没有影响就是低耦合。低耦合最基本的两个事,(1)一个是不需要有关系的两个类就不要有联系。(2)两个内部类不要有联系。
6多态:
多态,就是一类事物要统一继承一个抽象类。一族的行为要继承一个接口,对外一定只提供抽象类和接口,不提供具体的实现方法或者实现类。方便扩展出新的实现类
7 纯虚构:
纯虚构,就是两组不同实现不同接口的方法需要联系,交互。不可能每个实现方法 直接进行联系,那就做一个抽象方法进行交互,都用抽象入参,那就都可以包括使用了。
8中介:
中介就是,两个类不想直接交互,就通过一个中介来进行交互。这个是一个降低耦合的一个方法。
9受保护变化
受保护的变化模式保护元素的其他元素(对象,系统,子系统)的变化,通过包装的不稳定的焦点与一个接口和使用多态性来创建这个接口的各种实现。就是将变化的部分封装起来。
上面就是比较简单对于设计一点概述吧。下回,我会继续写设计原则我的一些看法。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!