- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
模式--设计模式.doc
GRASP(General Responsibility Assignment Software Patterns)
创建者(Creator)
问题:谁创建了A?
解决方案:如果以下条件之一为真时(越多越好),将创建类A实例的职责分配给B:
B“包含”或组成聚合了A
B记录A
B紧密地使用A
B具有A的初始化数据
举例:
比如在富客户端应用开发中,主程序创建一个主窗口对象,然后有主窗口对象来负责创建它内部的各种菜单、按钮等对象(而不是由主程序来创建这些菜单或按钮对象之后,再把它设置到主窗口中去)
信息专家(Information Expert)
问题:给对象分配职责的基本原则是什么?
解决方案:把职责分配给具有完成该职责所需信息的那个类。(描述一种直觉!)
举例:
public class Classes {
private int id;
private Set students;
//描述一种直觉
public void addStudent(Student student){
if(students == null){
students = new HashSet();
}
students.add(student);
}
//将职责放在拥有这个职责所需信息的那个类中
public boolean hasStudent(Student student){
for (Iterator iterator = students.iterator(); iterator.hasNext();) {
Student s = (Student) iterator.next();
if(s.equals(student)){
return true;
}
}
return false;
} public class Student {
private int id;
private String name;
//判断两个学生对象是否相同的职责,交给Student来完成,因为它拥有这个
//职责所需要的所有信息
public boolean equals(Student student) {
if(name.equals(student.getName())){
return true;
}
return false;
} public class TreeNode {
private int id;
private int level;
private String nodeName;
private TreeNode parent;
private ListTreeNode children;
public void print(){
for(int i=0; ilevel; i++){
System.out.print(--);
}
System.out.println(nodeName);
for (IteratorTreeNode iterator = children.iterator(); iterator.hasNext();) {
TreeNode node = iterator.next();
node.print();
}
}
低耦合(Low Coupling)
所谓耦合,即两个对象之间联系的紧密程度
问题:如何减少因变化产生的影响?
解决方案:分配职责以使耦合保持在较低的水平。
低耦合是构建软件最重要的目标之一。
要注意:我们讲低耦合,是降低与不稳定系统之间的耦合度,而不是那些稳定的系统,比如说我们在JAVA编程过程中,没有必要想专门的办法来降低与JDK核心类库之间的耦合度,因为JDK核心类库非常稳定,很少会发生变化。
高内聚(High Cohesion)
所谓内聚,即对象职责的相关性(或对象的操作之间联系的紧密程度)。高内聚,即保持对象职责的高度相关性。不良内聚和不良耦合往往都是齐头并进的!
问题:怎样保持对象是有重点的、可理解的、可管理的,并且能够支持低耦合?
解决方案:分配职责以保持较高的内聚性。
内聚性较低的类,要做许多不相关的工作,或需要完成大量的工作。这样的类是不合理的。这样的类会有下列问题:
难以理解
难以复用
难以维护
脆弱,经常会受到变化的影响
高内聚、低耦合是我们进行系统设计时,应该尽量要达到的目标。但是在某些情况下,这些原则也许不太合适。比如在分布式系统的开发中。分布式系统开发中的分布式对象之间的互相调用,可能会跨越网络,跨网络调用会导致系统性能的下降,为了提高性能,所以必须寻找某种手段来降低跨网络调用的次数。
您可能关注的文档
- 施工工艺实训指导书(合订).doc
- 旅游景点最优化模型(含代码).doc
- 无机材料物理化学第1篇第1章.pdf
- 日照市2010年农机购置补贴工作汇报.doc
- 日语一级文字总览(日语能力考试中心官方资料).pdf
- 日语中文阅读对照世界童话寓言-皇帝的新装.pdf
- 时代光华网络学院_企业规范化管理.doc
- 时间序列分析方法第06章谱分析.doc
- 时间异步无线传感器网络的分布式目标跟踪.pdf
- 时间的单位.doc
- 银行季度任务总结汇报.pptx
- 广东省龙门县人民政府驻广州办事处公开招聘人员招聘【综合基础知识500题】高频考点模拟试题及参考答案解析.docx
- 国有资源交易总结汇报.pptx
- 宁波市鄞州区文化和广电旅游体育局下属事业单位鄞州区越剧艺术传习中心公开招考1名工作人员【综合基础知识500题】高频考点模拟试题及参考答案解析.docx
- 宁波东钱湖文旅酒店管理限公司招聘派遣制工作人员【综合基础知识500题】高频考点模拟试题及参考答案解析.docx
- 市政维护半年总结汇报.pptx
- 宜昌市人力资源和社会保障局所属事业单位2024年急需紧缺人才引进【2人】【综合基础知识500题】高频考点模拟试题及参考答案解析.docx
- 山东德州一中食品科技限公司(德州一中食品厂)公开招聘工作人员7人【综合基础知识500题】高频考点模拟试题及参考答案解析.docx
- 广东梅州经济开发区招聘政府专职消防员【综合基础知识500题】高频考点模拟试题及参考答案解析.docx
- 海运安全管理总结汇报.pptx
文档评论(0)