电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

设计模式简要论述VIP免费

设计模式简要论述_第1页
1/9
设计模式简要论述_第2页
2/9
设计模式简要论述_第3页
3/9
第1页共9页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第1页共9页GRASP(GeneralResponsibilityAssignmentSoftwarePatterns)创建者(Creator)问题:谁创建了A?解决方案:如果以下条件之一为真时(越多越好),将创建类A实例的职责分配给B:B“包含”或组成聚合了AB记录AB紧密地使用AB具有A的初始化数据举例:比如在富客户端应用开发中,主程序创建一个主窗口对象,然后有主窗口对象来负责创建它内部的各种菜单、按钮等对象(而不是由主程序来创建这些菜单或按钮对象之后,再把它设置到主窗口中去)第2页共9页第1页共9页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第2页共9页信息专家(InformationExpert)问题:给对象分配职责的基本原则是什么?解决方案:把职责分配给具有完成该职责所需信息的那个类。(描述一种直觉!)举例:publicclassClasses{privateintid;privateSetstudents;//描述一种直觉publicvoidaddStudent(Studentstudent){if(students==null){students=newHashSet();}students.add(student);}//将职责放在拥有这个职责所需信息的那个类中publicbooleanhasStudent(Studentstudent){for(Iteratoriterator=students.iterator();iterator.hasNext();){Students=(Student)iterator.next();if(s.equals(student)){returntrue;}}returnfalse;}publicclassStudent{privateintid;privateStringname;//判断两个学生对象是否相同的职责,交给Student来完成,因为它拥有这个//职责所需要的所有信息publicbooleanequals(Studentstudent){if(name.equals(student.getName())){returntrue;}returnfalse;}publicclassTreeNode{privateintid;第3页共9页第2页共9页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第3页共9页privateintlevel;privateStringnodeName;privateTreeNodeparent;privateListchildren;publicvoidprint(){for(inti=0;iiterator=children.iterator();iterator.hasNext();){TreeNodenode=iterator.next();node.print();}}低耦合(LowCoupling)所谓耦合,即两个对象之间联系的紧密程度问题:如何减少因变化产生的影响?解决方案:分配职责以使耦合保持在较低的水平。低耦合是构建软件最重要的目标之一。要注意:我们讲低耦合,是降低与不稳定系统之间的耦合度,而不是那些稳定的系统,比如说我们在JAVA编程过程中,没有必要想专门的办法来降低与JDK核心类库之间的耦合度,因为JDK核心类库非常稳定,很少会发生变化。高内聚(HighCohesion)所谓内聚,即对象职责的相关性(或对象的操作之间联系的紧密程度)。高内聚,即保持对象职责的高度相关性。不良内聚和不良耦合往往都是齐头并进的!问题:怎样保持对象是有重点的、可理解的、可管理的,并且能够支持低耦合?解决方案:分配职责以保持较高的内聚性。内聚性较低的类,要做许多不相关的工作,或需要完成大量的工作。这样的类是不合理的这样的类会有下列问题:难以理解难以复用第4页共9页第3页共9页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第4页共9页难以维护脆弱,经常会受到变化的影响高内聚、低耦合是我们进行系统设计时,应该尽量要达到的目标。但是在某些情况下,这些原则也许不太合适。比如在分布式系统的开发中。分布式系统开发中的分布式对象之间的互相调用,可能会跨越网络,跨网络调用会导致系统性能的下降,为了提高性能,所以必须寻找某种手段来降低跨网络调用的次数。ClientBussinessObject1BussinessObject2BussinessObject3<<>>跨网络调用<<>>跨网络调用<<>>跨网络调用ClientBussinessObject1BussinessObject2BussinessObject3SessionFacade<<>>跨网络调用<<>>本地调用<<>>本地调用<<>>本地调用为了降低网络调用的数量,要求客户端一次性传输某个业务所需要的所有数据SessionFacade,中的方法执行完了之后,一次性返回客户端需要的数据,SessinFacade这样一来,中的方法设计将与业务操作息息相关...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

设计模式简要论述

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部