- 1、本文档共43页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7章 在对象之间搬移特性
第7 章 在对象之间搬移特性 7.1 搬移函数 Class AccountType… double overdraftCharge(int daysOverdarw) { if (isPramium()){ double result = 10; if (daysOverdrawn7) result +=(daysOverdrawn -7) * 0.85; return result; } else return daysOverdrawn * 1.75; } 7.2 转移值域 某个值域被其所在类之外的另一个类更多地用到。 在目标类建立一个新值域,修改原值域的所有用户,令它们改用新值域 7.3 提炼类 某个类做了应该由两个类做的事。 建立一个新类将相关的值域和函数从旧类搬移到新类 方法: 1. 决定如何分解类所负责任. 2. 建立一个新类,用以表现从旧类中分离出来的责任。 3. 建立从旧类访问新类的连接关系。 4.对于想搬移的每一个值域,运用搬移函数的方法搬移它。 5.每次搬移后,编译、测试。 6.使用搬移函数的方法将必要函数搬移到新类。先搬移较低层函数(被其他函数调用多于调用其他函数),再搬移较高层函数。 7. 每次搬移之后,编译、测试。 8. 检查,精简每个class的接口。 移动其他值域,并将相关函数移到TelephoneNumber类中 7.4 将类内联化 某个类没有做太多事情(没有承担足够责任) 将类的所有特性搬移到另一个类中,然后移除原类 1.在合并类中声明原类的public协议,并将其中所有函数委托至原类。 2.修改所有原类引用点,改而引用合并类。 3. 编译 ,测试 4. 运用搬移函数、值域方法,将原类的全部特性搬移到合并类中。 7.5 隐藏委托关系 客户直接调用其服务对象委托类。 在server端‘某个类建立客户所需的所有函数,用以隐藏委托关系 7.6 移除中间人 某个类做了过多的简单委托动作 让客户直接调用受托类 7.7 引入外加函数 server class需要一个额外函数,但无法修改这个类 在client class中建立一个函数,并以一个server class实体作为第一引数 7.8 引入本地扩展 所使用的server class需要一些额外函数,但无法修改这个class. 建立一个新class,使它包含这些额外函数。让这个扩展品成为原类的子类或外覆类。 class Department{ private String _chargeCode; private Person _manager; public Department(Person manager) { _manager = manager; } public Peson getManager() { return _manager; } ... 如果客户希望知道某人的经理是谁,他必须先取得Department对象: 如果对客户隐藏Department,可以减少偶合。为了这一目的,在person中建众一个简单的委托函数: 修改Person的所有客户,让它们改用新函数: 只要完成了对Department所有函数的委托关系,井相应修改了Person的所有客户,就可以移除Person中的访问函数getDeparment()了 manager = john.getDepartment(),getManager(); public Person getManager(){ return _department.getManager(); } manager = john.getManager(); 建立一个函数,用以取用受托对象。 2. 对于每个委托函数,在server中删除该函数,并将客户对该函数的调用替换为对受托对象)的调用。 3. 处理每个委托函数后,编译、测试。 class Person... Department _dapartment; public Person getMagager() { return _department.getManager(); } class Department... private Person _manager; public Department (Person manager) { _manager =
您可能关注的文档
最近下载
- 2023年爱尔七级八级验光师考试理论试卷及答案——七八级.doc
- 【国海证券-2025研报】人形机器人行业12月月报:上海、安徽、杭州发布机器人支持政策,特斯拉、宇树科技更新机器人产品进展视频.pdf VIP
- 企业融资过程财务风险分析及其防范措施探索.doc VIP
- 注塑车间绩效考核方案.pdf
- 九年级下册第二单元+世界舞台上的中国+课件-2025年中考道德与法治一轮大单元复习.pptx VIP
- 九年级下册第一单元+我们共同的世界+课件-+2025年河南省中考道德与法治一轮大单元复习+.pptx VIP
- 八年级下册第三单元+人民当家作主+课件-2025年河南中考道德与法治一轮大单元复习.pptx VIP
- 2022年汕头大学同等学力申硕(临床医学专业)考试题库汇总(含解析).pdf VIP
- 2025年中考语文6个专题复习课件485张.pptx
- 九年级上册第三单元+文明与家园+课件-2025年河南省中考道德与法治一轮大单元复习.pptx VIP
文档评论(0)