欢迎来到天天文库
浏览记录
ID:6015015
大小:111.00 KB
页数:2页
时间:2017-12-31
《七大设计原则(六)合成复用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、六、合成复用原则1.定义 i.尽量使用对象组合,而不是继承来达到复用的目的。2.分析 i. 合成复用原则就是指在一个新的对象里通过关联关系(包括组合关系和聚合关系)来使用一些已有的对象,使之成为新对象的一部分;新对象通过委派调用已有对象的方法达到复用其已有功能的目的。简言之:要尽量使用组合/聚合关系,少用继承。 ii.在面向对象设计中,可以通过两种基本方法在不同的环境中复用已有的设计和实现,即通过组合/聚合关系或通过继承。a) 继承复用:实现简单,易于扩展。破坏系统的封装性;从基类继承而来的实现是静态的,不可能在运
2、行时发生改变,没有足够的灵活性;只能在有限的环境中使用。(“白箱”复用)b)组合/聚合复用:耦合度相对较低,选择性地调用成员对象的操作;可以在运行时动态进行。(“黑箱”复用) iii.组合/聚合可以使系统更加灵活,类与类之间的耦合度降低,一个类的变化对其他类造成的影响相对较少,因此一般首选使用组合/聚合来实现复用;其次才考虑继承,在使用继承时,需要严格遵循里氏代换原则,有效使用继承会有助于对问题的理解,降低复杂度,而滥用继承反而会增加系统构建和维护的难度以及系统
3、的复杂度,因此需要慎重使用继承复用。3.实例 i.某教学管理系统部分数据库访问类设计如图所示:图(一)北大青鸟中关村软件园地址:北京市海淀区上地信息路甲28号科实大厦B座3层(B305)图(二)图(一)和图(二)分析:图(一)为什么到图(二)哪?因为如果需要更换数据库连接方式,如原来采用JDBC连接数据库,现在采用数据库连接池连接,则需要修改DBUtil类源代码。如果StudentDAO采用JDBC连接,但是TeacherDAO采用连接池连接,则需要增加一个新的DBUtil类,并修改StudentDAO或TeacherDAO的源代码,
4、使之继承新的数据库连接类,这将违背开闭原则,系统扩展性较差。总结:类中应用,尽量使用对象组合而不是用继承来达到复用的目的。----资料来源北大青鸟中关村官网北大青鸟中关村软件园官网北大青鸟中关村学士后本部官网北大青鸟中关村软件园地址:北京市海淀区上地信息路甲28号科实大厦B座3层(B305)
此文档下载收益归作者所有