预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共50页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第二讲GRASP设计原则我们在进行面向对象分析与设计(OOA&D)时应该怎样进行,遵循什么原则呢? 我们或许听说过设计模式(GOF),那是针对特定的问题提出的特定的解决方法。 面向对象的设计从提出到现在经过很多人的经验和实践,也总结出了很多原则。在设计开发中,如果能有意识地向这些原则靠拢,对我们的系统设计与开发会有很大的帮助,也是构筑具有稳定性,扩展性的系统的一个保障: -是否遵守了那些基本原则 -如果违反了基本原则,是否存在合适的理由 这些被大师们总结出来的基本原则包括了: 1、类的设计原则 2、包的设计原则 2.1包的内部关系方面(聚合性)的原则 2.2包之间的关系方面(耦合性)的原则类设计原则四、TheDependencyInversionPrinciple(DIP)-OO设计的依赖倒置原则A.Highlevelmodulesshouldnotdependuponlowlevelmodules.Bothshoulddependuponabstractions.B.Abstractionsshouldnotdependupondetails.Detailsshoulddependuponabstractions.A.高层模块不应该依赖于低层模块,二者都应该依赖于抽象B.抽象不应该依赖于细节,细节应该依赖于抽象五、TheInterfaceSegregationPrinciple(ISP)-OO设计的接口分隔原则 Clientsshouldnotbeforcedtodependuponinterfacesthattheydonotuse. 不能强迫用户去依赖那些他们不使用的接口。包设计原则二、包之间的关系方面(耦合性)的原则TheAcyclicDependenciesPrinciple(ADP)-OO设计的无环依赖原则Thedependencystructurebetweenpackagesmustbeadirectedacyclicgraph(DAG).Thatis,theremustbenocyclesinthedependencystructure.包之间的依赖结构必须是一个直接的无环图形(DAG)。也就是说,在依赖结构中不允许出现环(循环依赖)。TheStableDependenciesPrinciple(SDP)-OO设计的稳定依赖原则Thedependenciesbetweenpackagesinadesignshouldbeinthedirectionofthestabilityofthepackages.Apackageshouldonlydependuponpackagesthataremorestablethatitis.面向对象设计发现对象对象行为对象关系及扩展特性GRASP模式概述CraigLarman氏在《ApplyingUMLandPatterns》一书中提出了GRASP设计模式的概念。作者称其为设计模式,其实,更好的理解应该为设计原则。因为,与GoF等设计模式不同的是,GoF等设计模式是针对特定问题而提出的解决方法,而GRASP则是站在面向对象设计的角度,告诉我们怎么样设计问题空间中的类与它们的行为责任,以及明确类之间的相互关系等等。 GRASP可以说是GoF等设计模式的基础。GRASP特征及核心思想GRASP模式—通用责任分配软件模式(1)信息专家(Informationexpert)优点:InformationExpert例(2)创建者(Creator)应用Creator模式的好处Creator模式的应用例(3)高聚合度或高内聚(HighCohesion)应用HighCohesion模式的好处(4)低耦合度或低耦合(LowCoupling)应用LowCoupling模式的好处内聚与耦合的辩证关系(5)控制者(Controller)应用Controller模式的好处(6)多态(Polymorphism)Polymorphism模式所提倡的解决方案应用Polymorphism模式的好处Polymorphism模式的应用例(7)纯虚构(PureFarication)应用PureFabrication模式的好处PureFabrication模式的应用例(8)中介者或间接性(Indirection)应用Indirection模式的好处(9)保护变化或变化预防(ProtectedVariations)应用ProtectedVariations模式的好处ProtectedVariations模式的应用例小结