简析GRASP:根据职责设计对象

简析GRASP:根据职责设计对象
看Larman的UML和模式应用,感觉浑身上下都是宝,一遍两遍都不过瘾。
这几天又在看GRASP(general responsibility assignment software patterns的缩写),把该记的都记一下,加深印象,也与大家分享。网上这方面的资料并不多。
五个基本模式:information expert,creator,High Conhersion,Low Coupling,Controller

四个扩展模式:Polymorphism,indirection,pure fabrication,protected variations

不想一一详叙,挑重点看。
1,information expert:把职责分配给具有实现这个职责所需要信息的对象。它表述的是一种“直觉”。
2,creator:顾名思义,谁应该负责产生类的实例?类B聚合,包含,记录,密切使用类A的数据。
3,high conhersion与Low coupling:应该是到了面向对象的高层境界了。高耦合:依赖性过强。内聚:功能性内聚。降低一切不稳定元素之间的耦合。
4,controller:如果直接通过UI来访问业务层,后果是不堪想像的。C/S模式的开发中它是用来接收事件的,它通常不实现职责,只是委托给其他对象。在B/S中,我把它理解为serlvet。
5,polymorphism:多态?这个词很别扭,一句话解释:多态是设计系统如何处理相似变化的基本方法。便于扩展,可嵌入。比如以下代码:

abstract   class  Square
{…
  
abstract void landedOn();
…}

class  RegularSquare  extends  Square
{…
  
void landedOn()
 
{ … } // implementation
}

class  IncomeTaxSquare  extends  Square
{…
  
void landedOn()
 
{ … } // implementation
}


6,indirection与pure fabrication:目的无非是为了降低耦合。对象的设计分为两类:表示分离与行为分解。indirection与pure fabrication都是行为分解的产物。比如说我们常见的DAO模式,我认为就是很好的pure fabrication。
7,protected variations:书中翻译为受保护变化。叫做受保护的变化似乎更容易被理解。受保护的变化机制的具体体现:多态,接口,中介,数据封装。与LSP(liskov替换原理)很相似。



你可能感兴趣的:(简析GRASP:根据职责设计对象)