- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
tanhuobin_uml06.Object-OrientedDesignPrinciples
面向对象分析设计Object-Oriented Analysis Design
谭火彬
-2-
第06章 面向对象的设计原则
Object-Oriented Design Principles
-3-
学习路线图
-4-
-4-
从问题开始!
长方形与正方形
假如我们有一个类:长方形(Rectangle)
我们需要一个新的类,正方形(Square)
问:可否直接继承长方形?
没问题,因为数学上正方形就是长方形的子类!
-5-
-5-
开始设计:正方形
public class Rectangle {
private int width;
private int height;
public void setWidth(int w) {
width = w;
}
public int getWidth() {
return width;
}
public void setHeight(int h) {
height = h;
}
public int getHeight() {
return height;
}
}
public class Square extends Rectangle {
public void setWidth(int w) {
super.setWidth (w);
super.setHeight (w);
}
public void setHeight(int h) {
super.setWidth (h);
super.setHeight (h) ;
}
}
-6-
-6-
设计方案正确吗?
public static void resize(Rectangle r) {
while (r.getHeight() = r.getWidth()) {
r.setHeight(r.getHeight() + 1);
}
System.out.println(“It’s OK.);
}
Rectangle r1 = new Rectangle();
r1.setHeight(5);
r1.setWidth(15);
resize(r1);
Rectangle r2 = new Square();
r2.setHeight(5);
r2.setWidth(15);
resize(r2);
使用父类(长方形)时,程序正常运行
使用子类(正方形)时,程序陷入死循环
设计出问题了?继承出问题了?
-7-
-7-
为什么会出现问题?
违背了面向对象的设计原则!
-8-
-8-
面向对象的设计原则
面向对象的设计原则
是面向对象设计的基本指导思想
是评价面向对象设计的价值观体系
是设计模式的出发点和归宿
面向对象的设计原则是构造高质量软件的出发点
-9-
-9-
设计目标
构造出高质量软件,以保持系统稳定
设计目标
可扩展性 (Extensibility)
灵活性 (Flexibility)
可插入性 (Pluggability)
……
-10-
-10-
设计质量:培养灵敏的嗅觉
糟糕的设计总是散发出臭味,让人不悦
判断一个设计的好坏,主观上能否让你的合作方感到心情愉悦,是最直观的标准
设计开发人员要培养嗅觉,当你看到UML图或者代码,感到杂乱、繁琐、郁闷的时候,你可能正面对一个糟糕的设计
这种嗅觉是在实践开发中培养起来的,而面向对象设计原则对此加以归纳和总结
-11-
-11-
设计质量:坏的设计
什么是坏的设计?
僵硬性(Rigidity):刚性,难以扩展
脆弱性(Fragility):易碎,难以修改
牢固性(Immobility):无法分解成可移植的组件
不必要的复杂性(Needless Repetition):Ctrl C + Ctrl V
晦涩性(Opacity):不透明,很难看清设计者的真实意图
-12-
-12-
设计质量:好的设计
什么是好的设计?
容易理解
容易修改和扩展
容易复用
容易实现与应用
简单、紧凑、经济适用
让人工作起来心情愉快的设计
设计原则是提高设计质量的基本原则
-13-
-13-
面向对象的基本设计原则
LSP:Liskov替换原则
The Liskov Substitution Principle
OCP:开放-封闭原则
The Open-Close Principle
SRP:单一职责原则
The Single Responsibility Princ
文档评论(0)