面向对象之旅-设计与设计原则
好的面向对象的开发的目标是:代码易复用、可维护性强。
面向对象的设计方法:
1, 信息专家(Information Expert)
如果某个类拥有完成某个职责所需要的信息,那么,这个职责就应该分配给这个类。
2, 创造者(Creator)
如果下列条件被满足,则就由类A来创建类B:
a, A是B的聚合
b, A是B的容器
c, A持有初始化B的信息
d, A记录B的实例
e, A频繁地使用B
3, 低藕合(Low coupling)
下列情况会使A和B之间产生耦合:
a, A是B的属性
b, A调用B的实例方法
c, A的方法中引用了B,例如B是A方法的返回值或参数
d, A是B的子类,或者A实现了B
关于低耦合,还有一些基本的原则
a, Don’t talk to strangers,不需要进行通信的两个对象之间,就不要连接
b,如果A和B已经有了连接,分配A的职责给B不合适的话(违反信息专家模式),那么就把B的指责分配给A
c,两个不同模块的内部类之间不能直接连接
4, 高内聚(High cohesion)
5, 控制器(Controller)
6, 多态(Polymorphism)
7, 纯虚构(Pure Fabrication)
8, 间接(Indirection)
9, 受保护的变化(Protected Variations)
面向对象的设计模式的设计原则有:
1, 单一职责原则(Single Responsibility Principle)
一个类,应该仅有一个引起它变化的原因。本人理解这句话有两个参考点,一是类的变化,二是原因。类的变化,可以理解为状态的变化;引起变化的原因呢,可能不是原子级别的,也许是多重原因,但在逻辑上看,是属于同一个原因。
2, 开放封闭原则(Open-Closed Principle)
软件实体应该可以扩展,而不可以修改。
3, 依赖倒置原则(Dependency Inversion Principle)
抽象不应该依赖于细节,细节应该依赖于抽象
4, 接口隔离原则(Interface Segregation Principle)
Clients should not be forced to depend upon interfaces thatthey do not use.
客户端不应该依赖于它们不使用的接口。
5, 替换原则(Liskov Substitution Principle)
In class hierarchies, it should bepossible to treat a specialized object as if were a base class object.
在层级关系中,子类应该可以替换父类。
比较使得的例子慢慢的加上,以加深自己的理解,量变发生质变。