一、面向对象三大设计原则
1、针对接口编程,而不是针对实现编程
可以通过派生接口的类实现(Java中常见)来完成,这样无需知道具体的实现。可自顶而上的进行设计,也可以自下而上的进行抽取公共部分。
public interface A//接口
{
public:
void Move();
void Fly();
}
//分别从这个接口派生类实现
在C++类中,可将其进行转换处理,起到一个函数转换的作用
void Move_base()
{
Move();//子类的实现
}
2、优先使用对象组合,而不是类继承
这样的话,一个对象就把职责分散开来,交给不同的对象来处理
3、封装变化点【3】
使得尽量修改变化地方的修改,解释如下:
//工厂方法模式
Factory fac=new Factory ();
Animal ani=new Dog(); //如果修改为Chicken的话,则不需要修改其他代码,这个是变化的地方
fac.setAnimal( ani);
Animal ani1=fac.createInstance(); //在一个函数体内,或者在其他地方
Animal ani2=fac.createInstance();
二、五大具体设计原则
1、单一职责原则(SRP—Single Responsibility Principle)【4】、【5】
将一个两个职责接口进行拆分,然后从他们为派生一个公共的接口
2、开放—封闭原则(OCP—Open for extension ,Closed for modification Principle)
对扩展开放,对修改封闭,即加入新的功能时,要不修改原来的组件代码。
3、Liskov替换原则(LSP)
子类必须替换它的基类,其实就是一派生的功能。
4、依赖倒置原则(DIP—Delpendence Inversion Principle)
里面就是Factory Method实现可以做一个解释。
a. 高层模块不依赖于底层模块,两者都依赖于抽象
b. 抽象不应该依赖细节,细节应该依赖抽象。
5、接口隔离原则(ISP—Interface Segregation Principle)【6】
将各种接口分一个类别,然后依赖时,调用各个类别的接口对象
参考:1、面向对象设计模式纵横谈(1)