java设计模式-设计模式七大原则

设计模式的设计依据

(1)单一职责

  • 概念

一个类只负责一项职责,降低耦合;
类级别单一职责,类中的方法少时,可以使用方法级别的单一职责;

  • 场景

手机虽然有阅读功能,但是kindle能让阅读更专注、效率更高;
(2)接口隔离

  • 概念

最小接口,客户端不应该依赖它不需要的接口,将多方法接口按依赖进行拆分;
(3)依赖倒置

  • 概念

细节依赖接口,面向接口(抽象类)编程;
变量的声明类型尽量是抽象类或者接口,使引用与实体对象之间有一个缓冲层,利于程序扩展和优化;
依赖实现方式:接口传递、set、构造方法;

  • 场景

高层和底层的实现都要依赖接口,比如CPU的实现和主板的实现都依赖于主板上的CPU插槽接口;
(4)里式替换

  • 概念

在使用继承时,使用里式替换原则,子类B尽量不要重写父类A的方法,如果一定要重写,可以将父类A和子类B的公用方法再提升到一个父类S,使得B和A解除耦合;
正确使用继承应遵循里式替换原则;

  • 场景

企鹅不能继承于鸟,鸟类定义了飞和下蛋的行为,但是企鹅不能飞,企鹅不能以鸟类的身份出现,故企鹅需要区别于鸟类,即使在生物学角度来说企鹅属于鸟类;
(5)开闭原则(OCP)

  • 概念

一个软件实体如类,模块和函数应该对扩展开放(提供方),对修改关闭(调用方)。用抽象构建框架,用实现扩展细节;
面对需求,对程序的改动是通过新增代码进行的,而不是更改现有的代码;
(6)迪米特法则

  • 概念

最少知道原则,一个对象应该对其他对象保持最少了解;
类与类关系越密切,耦合度越大;
对于被依赖的类不管多复杂,都尽量将复杂的逻辑封装成public方法提供给外部;

  • 场景

比如 controller 层 vo 的校验方法 validate() 可以写在对应的 vo 中,而不是写在 controller 或 service 中;
(7)合成/聚合复用原则

  • 概念

聚合:表示一种弱“拥有”关系,体现的是A对象可以包含B对象,但是B对象不是A对象的一部分。比如A为雁群,B为大雁;
合成:表示一种强“拥有”关系,体现了严格的部分和整体的关系,部分和整体的生命周期一样。比如翅膀为部分,大雁为整体,翅膀是大雁不可分割的整体;
原则是尽量使用合成/聚合的方式,而不是使用继承;

你可能感兴趣的:(#,设计模式,java,开发语言,设计模式,系统架构)