《类设计指南》

一.合理封装 面向对象设计(ood)之黄金准则——找出变化点,封装它

当年设计一个类时候,从一开始就用封装的思想来设计它
设计类时,不仅隐藏数据,同时也要隐藏底层数据存储方式、算法等具体实现细节
<一个封装良好的类,不用看文档就会用,也不易被误用>。
“封装”是一种重构方法
当对老代码进行维护时,对需要这些代码进行必要的抽象与封装,以提升其可扩展性,更易于重用,这是一种重要的系统重构方式
具体实现手段:
从现有的类中抽取出接口(或者抽象基类),推动系统架构进行演化。。。
二.基于职责设计类 每个类的职责必须要明确
每个类只承担一项职责
Expert/Information Expert原则
某项功能需要某些必要的信息,这些信息再哪个类中,就让这个类承担这些职责。(如果这个类要实现某个功能,而这个功能的这些信息一定要归属于这个类,即处理信息和信息本身要放到一个类中)
Creator原则
这一原则要求设计者想清楚一件事:
谁负责创建对象?
Controller原则
考虑:谁负责显示数据?谁负责相应事件?谁负责处理数据?..
例如非常著名的:MVC


High Cohesion/Low Coupling
Coupling(耦合性):用于衡量对象之间依赖性的强弱
Cohesion(内聚性):用于衡量某个类所提供的外部功能及内部代码之间关联的紧密程度
在设计一个类的时候,追求“低耦合,高内聚”
【《类设计指南》】有效方法:
1.组合优先与继承


Indirection(间接性)原则
对象之间相互关联,形成了复杂的交互网络
为了减少耦合,创建一个中间对象,将多对多关联拆散为一对多关联


Pure Fabrication 原则
当某些功能不适合与归属到特定的业务逻辑相关的类时,创建一个新的类,这种机制被成为“Pure Fabrication“,就是”生造出来的类“。


Protected Variations原则
这一原则可译为”隔离变化“原则,简单说:在设计类时,应该尽量让其少受外界的影响


Polymorphism(多态性)原则
利用多态性,把变化封装到子类中


三. 区分命令与查询

    推荐阅读