Java进阶 - [1-1] 六大设计原则

 

不要因为某本书而去读,而是因为这本书让你读起来时常有共鸣而去读。

 

 

一、单一职责原则

【术语】:SRP,Single Reposibility Principle

【定义】:一个类或者模块只负责完成一个职责。

 

 

二、里氏替换原则

【术语】:LSP,Liskov Substitution Principle

【定义】:所有使用父类的地方可以使用子类的对象,子类可以扩展父类的功能,但是不能替换父类的功能。如果需要替换父类功能,建议——多用组合,少用继承。

【含义】:

1、里氏替换原则是针对继承而言的,如果继承是为了实现代码重用,也就是为了共享方法,那么共享的父类方法就应该保持不变,不能被子类重新定义。子类只能通过新添加方法来扩展功能,父类和子类都可以实例化,而子类继承的方法和父类是一样的,父类调用方法的地方,子类也可以调用同一个继承得来的,逻辑和父类一致的方法,这时用子类对象将父类对象替换掉时,当然逻辑一致,相安无事。

2、如果继承的目的是为了多态,而多态的前提就是子类覆盖并重新定义父类的方法,为了符合LSP,我们应该将父类定义为抽象类,并定义抽象方法,让子类重新定义这些方法,当不存在子类替换父类实例(根本不存在父类实例了)时逻辑不一致的可能。

 

 

三、依赖倒置原则

【术语】:DIP,Dependence Inversion Principle

【定义】:下层模块引入上层模块的依赖,改变原有自上而下的依赖方向。

 

 

 

四、接口隔离原则

【定义】:建立单一接口,不要建立臃肿庞大的接口。接口尽量细化,同时接口中的方法尽量少。

【含义】:

1、接口要尽量小

  • 不要违反单一职责原则。
  • 要适度的小,要适度。

2、接口要高内聚

  • 提高接口、类、模块的处理能力,减少对外的交互。

3、定制服务

  • 通过对高质量接口的组装,实现服务的定制化。

 

 

五、迪米特法则/最少知识原则

【术语】:LoD:Law of Demeter

一个类应该对自己需要耦合或调用的类知道得最少,你(被耦合或调用的类)的内部是如何复杂,那是你的事儿,和我没关系,我就知道你提供的这么多pulic方法,我就调用这么多,其他的我一概不关系。

 

六、开闭原则

【定义】:类、方法、模块应该对扩展开放,对修改关闭

【含义】:添加一个功能应该是在已有的代码基础上进行扩展,而不是修改已有的代码

 

 

 

— 要养成终身学习的习惯 —

posted @ 2024-02-29 17:04  HOUHUILIN  阅读(2)  评论(0编辑  收藏  举报