设计模式GRASP和GoF是怎样解决耦合的问题
?
现在,我们再换一个角度,从整个软件开发过程来分析GRASP和GoF。按照RUP的设计流程,首先当然是设计用例模型和领域模型,然后就进入分析模型和设计模型阶段。但是非常神奇的是,分析模型和设计模型既非常相似,又没有一个明显的界限来区分哪些是分析模型,哪些是设计模型。按照我的理解,分析模型是从不包含任何技术的,纯业务的角度开始对象分析的。不论是Java的项目、C++的项目还是Delphi的项目,不论是B/S的结构还是C/S的结构,分析模型的开始都是一样的。从分析模型的一开始,就是运用GRASP一步一步的进行对象分析和设计的。通过这样的设计,对应于现实世界的一个一个对象被设计出来,然后赋予它们职责和功能,分配它们属性和方法,建立起它们相互之间的联系与协作。分析完这些以后,它们的各个具体的属性和方法就需要开始实现,这时技术的东西开始介入,我们开始考虑把一些具体的实现抽象为接口和抽象类,以适应今后的需求变化。这时候,GoF的一些设计模式开始广泛运用,纯虚对象开始一个一个出现。把具体的实现抽象为接口和抽象类,以适应今后的需求变化,是GoF一个非常重要的设计原则,GoF中的许多设计模式都是由此而生的。分析模型和设计模型的界线也许就是分析模型还仅仅只是分析阶段,而设计模型已经进入到了软件开发阶段,但这样的界线是模糊的,并没有一个绝对的时间点。
最后,一个很有意思的问题是,GRASP的作用大还是GoF的作用大?做分析的朋友可能说GRASP的作用大,因为所有问题越是在项目开发的早期解决,越是给项目带来的代价越小;做设计的朋友可能会说GoF的作用大,因为GRASP只是在对象分析的初期运用,而GoF的运用贯穿整个软件设计的始末,作用时间更长。我认为这个问题不好回答,它们各司其职,我们只有配合使用它们才能有效地提高我们的设计水平。 1 楼 Uranus 2007-05-14 看懂你的意思了,设计与实现的关系,我在好好想想。 2 楼 dovecat 2007-05-14 ...呵呵~~挑明了说吧: