Java面向对象设计原则

个人学习整合自

  1. 《Java设计模式》 刘伟 编著

面向对象设计原则

目的是软件的可维护性和可复用性。

最常见的有以下七个。


1. 单一职责原则

Single Responsibility Principle(SRP)
一个对象一个只包含单一的职责,并且该职责被完整地封装在一个类中。

比如说一个类里面有数据库连接方法,数据库CRUD方法,显示打印方法,那么对应的实例对象的职责就太多了。以后每次对某个方法修改都对整个类改动。不符合单一职责原则。应该分为三个类

  1. DBUtil: 负责数据库连接的类,getConnection()方法。
  2. CustomerDAO: 类里面放CRUD方法。
  3. CustomerEcho: 类里面放打印显示的功能方法。

2. 开闭原则

Open-Closed Principle(OCP)
软件实体应该对拓展开放,对内修改关闭。

就是说有新需求的时候,我们不用修改现在的代码,只需要添加新的代码就可以了。所有就需要对系统进行抽象化设计了。分为抽象层(接口、抽象类)和实现层。新需求代码就多写拓展实现层就行了。


3. 里氏代换原则

Liskov Substitution Principle(LSP)
所有引用基类的地方必须能透明地使用其子类的对象

里氏是一个外国提出者的姓氏而已,就是说可以将一个基类对象替换成其子类的对象,程序不产生错误和异常,但是发过来就不行。不能将把子类对象替换成基类。比如我喜欢动物(基类),所以我一定喜欢狗(子类),但是反过来不行。类似多态。

Animal a = new Animal();
Dog d = new Dog();

(Animal)d;  // 不一定行
(Dog)a; // 可以

4. 依赖倒转原则

Dependence Inversion Principle(DIP)
高层模板不应该依赖低层模板,它们都应该依赖抽象。抽象不应该依赖于具体细节,细节应该依赖于抽象。

也就是针对抽象层编程,面向接口编程,将具体类的对象通过依赖注入的方式注入到其他对象中,依赖注入是指当一个对象要与其他对象发送依赖关系时(前者是后者的属性)采用抽象的形式来注入所依赖的对象。

类似Spring,常用的注入方式有三种,分别是构造注入、设置注入(setter注入)、接口注入。


5. 接口隔离原则

Interface Segregation Principle(ISP)
客户端不应该依赖那些它不需要的接口。


6. 合成复用原则

Composite Reuse Principle(CRP)
优先使用对象组合,而不是通过继承来达到复用的目的。


7. 迪米特法则

Law of Demeter(Lod)
每一个软件单位对其他单位都只有最少的知识,而且局限于那些与本单位密切的软件单位。

迪米特是个人名,这个法则也被称为最少知识法则

你可能感兴趣的:(Java,开发)