设计原则

    • 1.单一职责原则
    • 2.里氏替换原则
    • 3.依赖倒置原则
    • 4.接口隔离原则

本文介绍设计模式中6个设计原则。

1.单一职责原则

要求一个接口或类只有一个原因引起变化,即一个接口或类只有一个职责,只负责一件事情。举个例子,假设有个电话接口定义是:

public interface IPhone {
    //接通电话
    void dial(String phoneNumber);
    //通话
    void chat(Object o);
    //挂电话
    void hangeup();
}

IPhone接口有两个职责:一个是协议管理,包括接通电话和挂掉电话;另一个是数据传送,把我们说的话转换成数字信息传递给对方。根据单一职责原则,IPhone接口应该拆成两个接口。
其实,接口、类、方法都应该使用单一职责原则。但是,类的单一职责确实受很多因素制约,现实中类的实现往往违背该原则。从最佳实践来讲,建议接口一定要做到单一职责,类只能是尽量遵循。

2.里氏替换原则

里氏替换原则,是说所有引用基类的地方必须能透明地使用其子类的对象。即只要父类出现的地方子类就可以出现,而且替换为子类也不会产生任何错误或异常。但是反过来就不行了,有子类的地方,父类未必就能适应。
里氏替换原则为继承提供了一种规范:
1)子类必须完全实现父类的方法。如果子类不能完整地实现父类方法,或者父类的某些方法在子类中已经发生“畸变”,建议断开父子关系。想想看,如果子类没有完整实现父类的方法,那么以子类的实例出现在父类出现的地方,势必会发生父类中的某些方法不可用。
2)子类可以有自己的个性。但项目实践中,尽量避免子类的个性,一旦子类有了个性,那么子类的实例出现在父类出现的地方时,子类个性的方法就会被抹杀掉了。如果子类单独用,又失去了继承的意义。

3.依赖倒置原则

“倒置”是什么意思?先说说“正置”,依赖“正置”就是类间的依赖是实实在在的实现类间的依赖,比如我要开汽车就依赖汽车,我想使用笔记本,就依赖笔记本。而编写程序需要对现实世界的事物进行抽象,抽象的结果就是有了抽象类和接口,我们根据系统设计的需要产生了抽象间的依赖,代替了人们传统思维中的事物间的依赖。这种抽象间的依赖,就是依赖倒置。
该原则本质就是通过抽象(接口或抽象类)使各个类彼此独立,实现模块间松耦合。在项目中使用该原则应该遵循的几个规则:
1)每个类尽量都有接口或抽象类,有了抽象才可能依赖倒置;
2)变量的表面类型尽量是接口或抽象类。什么是表面类型?举个例子。

IDriver zhangsan = new Driver();

其中,IDriver是表面类型,Driver是实际类型。

4.接口隔离原则

你可能感兴趣的:(设计模式)