- 4
- 0
- 约6.92千字
- 约 36页
- 2017-04-01 发布于四川
- 举报
第8章节—面向对象体系结构的设计准则
软件体系结构 补充内容:重要 第八章-面向对象体系结构设计原则 回顾 设计模式 MVC ABSD ABSD相关术语 ABSDM 本节主要内容 面向对象体系结构设计7大原则 单一职责原则 开-闭原则 里氏代换原则 依赖倒转原则 接口隔离原则 合成/聚合复用原则 迪米特原则 单一职责原则 有关手机 如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或抑制这个类完成其他职责的能力,这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏! 单一职责原则 软件设计真正要做的许多内容,就是发现职责并且把职责相互分离 原则:若想到多于一个的动机去改变一个类,那么这个类就具有多于一个的职责 一个类只有一种职责 SRP Single Responsibility Principle 开-闭原则 对扩展开放、对更改封闭 Open for extension Closed for modification + - 法类图 开-闭原则 开放-封闭原则是面向对象设计的核心所在 遵循这个原则可以带来面向对象技术所声称的巨大好处 开发人员将程序中呈现出频繁变化的部分抽象出来 但是每个部分都进行抽象不是一个好主意。拒绝不成熟的抽象和抽象本身一样重要! 里氏代换原则 Barbara Liskow 在1988年发表的 1972年Barbara成为麻省理工学院的教授 是美国获得计算机科学博士学位的第一人 里氏代换原则 Liskow Substitution Principle (LSP):子类必须能够替换掉它们的父类型 只要是基类出现的地方,一定能够出现子类! LSP指导继承,是继承的基石 LSP 例子: 企鹅是一种鸟,鸟都会飞,但是企鹅不会飞,那么企鹅可以继承鸟这个类吗? 不能!因为飞是鸟的public方法! 一个例子:长方形和正方形 某软件 while(长=宽),将宽+1. 父类没问题,但子类就回出现死循环 正方形不可以继承长方形 LSP 例子 孙悟空勾掉生死簿中所有猴子的名字,那么猕猴、石猴、长臂猿等的名字是否都勾掉了? 乘马,乘白马、乘骊马 注意LSP反之不成立! 《墨子 小取》娣,美人也,爱娣,非爱美人也….盗,人也;恶盗,非恶人也 依赖倒转原则 要针对接口编程,不要针对实现编程。 Program to an interface, not an implementation. 电脑 PC 高层模块不应该依赖底层模块,两者应该都依赖抽象 High-level module should not depend upon bottom module. both should depend upon abstractions 依赖倒转原则 所谓的依赖倒转就是谁也不要依赖谁,除了约定的接口,大家都要灵活自在! 收音机是否符合依赖倒转原则? 为何说倒转呢? 为何说倒转 依赖倒转 无论是高层还是底层都不互相依赖 高层模块不依赖底层模块,两者都应该依赖抽象。 依赖倒转的缺点 很强大,但却不多人会用 需要丰富的面向对象经验和丰富的类管理经验 接口隔离原则 Interface Segregation Principle ISP 客户端不应该依赖它不需要的方法 类间的依赖关系应该建立在最小的接口上 ISP 接口是我们设计时对外提供的契约,通过分散定义多个接口,可以预防未来变更的扩散,提高系统的灵活性和可维护性。 接口定义的方法,在其子类必须要实现。 一个例子 一个接口:内容是雇佣者有吃饭和做工作的方法 雇佣的男、女都可以使用该接口 有一天,雇佣者来了一个机器人。 机器人不吃饭 例子 C#-错误 Interface IWorker { void eat(); void work(); } Class Worker:IWorker { void eat (){//eat 相关代码} void work(){//work相关代码} } ISP 例子的缺陷 胖接口,造成了对接口的污染 如何解决? 客户端不应该依赖它不需要的方法 类间的依赖关系应该建立在最小的接口上 一个接口只做一件事 例子C#-正确符合ISP Interface IWorkerEat{ void eat();} Interface IWorkerWork{void work();} Class Worker:IWorkerEat,IWorkerWork { void eat (){//eat 相关代码} void work(){//work相关代码} } Class Robot:IWorkerWork { void work() {//work相关代码} } ISP 胖接口容易导致哑方法 瘦接口更健康! 复习
您可能关注的文档
- 第6章节程序的设计基本.ppt
- 第6章节美国社会保障制度.ppt
- 第6章节广告信息策略.ppt
- 第6章节绩效的管理[上课用].ppt
- 第6章节的设计阶段工程造价的管理.ppt
- 第6章节编译预处理—重庆邮电大学.ppt
- 第6章节结构化剖析建模.ppt
- 第6章节群体传播与组织传播.ppt
- 第6章节群体与团队.ppt
- 第6章节联机信息检索.ppt
- 2025-2026学年天津市和平区高三(上)期末数学试卷(含解析).pdf
- 2025-2026学年云南省楚雄州高三(上)期末数学试卷(含答案).pdf
- 2025-2026学年甘肃省天水市张家川实验中学高三(上)期末数学试卷(含答案).docx
- 2025-2026学年福建省厦门市松柏中学高二(上)期末数学试卷(含答案).docx
- 2025-2026学年广西钦州市高一(上)期末物理试卷(含答案).docx
- 2025-2026学年河北省邯郸市临漳县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省石家庄二十三中七年级(上)期末历史试卷(含答案).docx
- 2025-2026学年海南省五指山市九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省唐山市玉田县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省邢台市市区九年级(上)期末化学试卷(含答案).docx
最近下载
- 心源性晕厥临床表现及护理.pptx VIP
- 食物不耐受IgG解读.pptx
- 2021 固态锂电池用固态电解质性能要求及测试方法 无机氧化物固态电解质.docx VIP
- 毕业论文(设计)小型混凝土搅拌机设计.doc VIP
- 人教版(2024)新教材八年级数学下册第20章20.1 勾股定理及其应用每课时教学设计汇编(含三个教学设计).docx VIP
- 2025CSCO前列腺癌诊疗指南更新解读(全文).pdf VIP
- 湘教版(2024)新教材八年级地理下册第六章第二节《东北地区的人口与城乡分布》精品教学设计.docx VIP
- 山西省2024年中考英语模拟试卷(含答案)2.pdf VIP
- 2025年食品安全国家标准-食品生产卫生规范GB14881培训考试试题及参考答案.docx VIP
- 语文 《红楼梦》阅读中“选择题”解题技巧阐释与训练 2024-2025学年统编版高一语文必修下册.docx VIP
原创力文档

文档评论(0)