{容易阅读(简约和注释),容易维护(需求变更进行修改或扩展),容易复用(可移植性)}
面向对象设计:面向对象--活字印刷
粒度:可复用性
单一职责原则:就一个类而言,应该有且仅有【一个】引起它变化的原因。
软件设计,真正要做的许多内容,就是发现职责并把那些职责相互分离。其实要去判断是否应该分离出类来,也不难,那就是【如果你能够想到多于一个的动机去改变一个类,那么这个类就具有多于一个的职责, 就应该考虑类的职责分离】。
开放-封闭原则:对于扩展是开放的,对于更改是封闭的。抽象处理,就是提取接口类处理,[拒绝不成熟的抽象和抽象本身一样重要!切记!!]
依赖倒置原则:高层模块不应该依赖低层模块,两个都应该依赖抽象。抽象不应该依赖细节(实现),细节(实现)应该依赖抽象。 这话绕口,说白了,就是【要针对接口编程,不要针对实现编程】。举例:电脑类似针对接口编程,收音机类似于针对实现编程。
迪米特法则:(Law of Demeter)又叫作最少知识原则(Least Knowledge Principle 简写LKP),就是说一个对象应当对其他对象有尽可能少的了解,不和陌生人说话。英文简写为: LoD.
① 在类的划分上,应该创建有弱耦合的类;
② 在类的结构设计上,每一个类都应当尽量降低成员的访问权限;
③ 在类的设计上,只要有可能,一个类应当设计成不变类;
④ 在对其他类的引用上,一个对象对其它对象的引用应当降到最低;
⑤ 尽量降低类的访问权限;
⑥ 谨慎使用序列化功能;
⑦ 不要暴露类成员,而应该提供相应的访问器(属性)。
其根本思想是强调了类之间的松耦合,我们在程序设计时,类之间的耦合越弱,越有利于复用,一个处在弱耦合的类被修改,波及的有关系的类十分有限。也就是说,信息的隐藏促进了软件的复用。