- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Java 接口定义混合类型 ? 所谓混合类型,就是在一个类的主类型之外 的次要类型。 ? 比如 Hashtable 类就有多个类型。它的主要 类型是 Map ,这是一种 Java 聚集。而 Cloneable 接口则给出一个次要类型,这个类型说明这个类 的实例是可以安全克隆的。同样, Serializable 也是一个次要类型,它表明这个类的实例是可以 串行化的。 ? 如下所示: Dictionary Map Cloneable Java.io.Serializable Java.util.Hashtable 联合使用 Java 抽象类和 Java 接口 ? 由于 Java 抽象类具有提供缺省实现的优 点,而 Java 接口具有其他所有的优点,如 下图所示,所以联合使用两者就算一个很 好的选择。 《 interface 》 抽象类型 缺省实现 联合使用的实现 ? 首先,声明类型的工作仍然是由 Java 接口实现的,但是同时给出的还有一个 Java 抽象类,为这个接口给出一个缺省实 现。其他同属于这个抽象类型的具体类可 以选择实现这个 Java 接口,也可以选择继 承自这个抽象类。 联合使用的实现(续) ? 如果一个具体类直接实现这个 Java 接口的话, 它就必须自行实现所有的接口;相反,如果它继 承自抽象类的话,它可以省去一些不必要的方法, 因为它可以从抽象类中自动得到这些方法的缺省 实现。 ? 如果需要向 Java 接口加入一个新的方法的话, 那么只要同时向这个抽象类加入这个方法的一个 具体实现就可以了,因为所有继承自这个抽象类 的子类都会从这个抽象类得到这个具体方法。这 其实就是缺省适配模式。 一个例子: 账号,账号的种类和账号的状态 ? Account 类有两个聚类关系 —— 均是 静态抽象类型,一个指向 AccountType (该类型有 Saving 和 Checking 两种具体 子类),另一个指向 AccountStatus (该 类型有 Open 和 OverDrawn 两种具体实 现)。 ? 如下图所示: Account +Account(accType:AccountType) +depoist(amt:float)void AccountStatus +sendCorrespondence():void Account +depoist(amt:float)void Saving +depoist(amt:float)void AccountType +depoist(amt:float)void Overdrawn +sendCorrespondence():void Open +sendCorrespondence():void 面向对象设计方法 L06 B 可重用和可维护原则 — 依赖倒换 原则 . wxz 为何而“倒转” ? 倒转的意义: 传统的过程性系统的设计办法倾向于使 高层次的模块依赖于低层次的模块;抽象 层次依赖于具体层次。倒转原则就是要把 这个错误的依赖关系倒转过来,这就是 “依赖倒转原则”的来由。(抽象层次依 赖于具体层次) 为何而“倒转” ? 抽象层次含有宏观的和重要商务逻辑,是 必然性的体现,而具体层次是含有一些次 要的与实现有关的算法和逻辑,带有相当 大的偶然性选择。 复用与可维护性的“倒转” ? 从复用的角度来看,高层次的模块是 设计者应当复用的。但是传统的过程性的 设计中,复用却侧重于具体层次模块的复 用,比如算法复用 , 数据结构复用 , 函数库 复用等,都不可避免是具体层次模块的复 用。较高层次的结构依赖于较低层次的结 果,接下去不断的循环直到依赖于每一行 的代码。较低层次的修改就会影响到较高 层次的修改,直到高层次逻辑的修改 ? 传统的做法也强调具体层次上的可维护性, 而不是高层次上的可维护性。 ? 从复用的意义上来说,既然抽象层次含有 一个应用系统最重要的宏观商务逻辑,是 作战略性判断和决定的地方,那么抽象层 次就应当是较为稳定的,应当是复用的重 点。由于现有的复用侧重于具体模块和细 节的复用,因此,“倒转”一词是指复用 应当将复用的重点放在抽象层次上。 ? 最重要的宏观商务逻辑也应当是维护重点 ? 遵守依赖倒转原则会带来复用和可维护性 的“倒转”。 依赖倒转原则 ? 三种耦合关系
您可能关注的文档
最近下载
- 【解读】GB17761-2018电动自行车安全技术规范.pdf VIP
- AD832I机台操作指引.pdf VIP
- 《植物的茎》(教案)-中职农林牧渔大类《植物生长和环境》同步教学(高教版)(第四版)(全一册).docx VIP
- 证券从业资格证金融市场基础知识模拟卷及答案解析.docx VIP
- 证券从业资格证考试金融市场基础知识冲刺试题.docx VIP
- 证券从业资格证《金融市场基础知识》考前练习及答案解析.docx VIP
- 证券从业《金融市场基础知识》基础练及答案解析.docx VIP
- 证券从业资格考试金融市场基础知识预测试题及答案解析.docx VIP
- 2021年证券从业考试《金融市场基础知识》习题及答案.docx VIP
- 高中英语学业质量标准研究.pptx VIP
文档评论(0)