Java设计模式中之七大设计原则

单一职责原则

简述:单个类,单个方法或者单个框架只完成某一特定功能。(高内聚,低耦合)

​ 遵守单一原则,可以给我们带来的好处是,提高了代码的可重用性,同时还让得到的数据不再有耦合,可以用来完成我们的个性化需求。

开闭原则

简述:对扩展(新功能)开放,对修改(旧功能)关闭

​ 在开发时,我们应该,必须去考虑可能会变化的需求,属性在任何时候都可能发生改变,对于需求的变化,在要求遵守开闭原则的前提下,我们应该在开发中去进行扩展,而不是修改源代码

里氏代换原则

简述:任何能使用父类对象的地方,都应该能透明地替换为子类对象。

里氏替换原则的使用需要考虑的条件

  • 是否有is-a关系
  • 子类可以扩展父类的功能,但是不能改变父类原有的功能。

接口隔离原则

简述:设计接口的时候,接口的抽象应是具有特定意义的。需要设计出的是一个内聚的、职责单一的接口。“使用多个专门接口总比使用单一的总接口好。”这一原则不提倡设计出具有“普遍”意义的接口。

​ 客户端依赖的接口中不应该存在他所不需要的方法。如果某一接口太大导致这一情况发生,应该分割这一接口,使用接口的客户端只需要知道他需要使用的接口及该接口中的方法即可。

依赖倒转原则

简述:上层不能依赖于下层,他们都应该依赖于抽象。

依赖倒转原则就是指:代码要依赖于抽象的类,而不要依赖于具体的类;要针对接口或抽象类编程,而不是针对具体类编程。通过面向接口编程,抽象不应该依赖于细节,细节应该依赖于抽象。

合成复用原则

简述:在复用功能时,尽量少使用继承关系,应该多使用组合和聚合关联关系。

​ 当我们不属于继承父类的开发团队时,是没办法保证父类代码不会被修改,或者修改时一定被通知到,这时候,就可能会出现需求满足有缺陷的情况。所以,但我们去复用父类的代码时,避免去重写或者新建方法,这样可以防止源代码结构发生改变带来的打击。

也就是说,我们在重用代码时,应该是组合优于继承

迪米特法则

简述:一个类对于其他类知道的越少越好,就是说一个对象应当对其他对象有尽可能少的了解,只和朋友通信,不和陌生人说话。

朋友指哪些?

  1. 类中的字段
  2. 方法的返回值
  3. 方法的参数
  4. 方法中的实例对象
  5. 对象本身
  6. 集合中的泛型

总的来说,只要在自身内定义的就是朋友,通过其他方法得到的都只是朋友的朋友;

但是,朋友的朋友不是我的朋友。

在实际开发中,要完全符合迪米特法则,也会有缺点:

  • 在系统里造出大量的小方法,这些方法仅仅是传递间接的调用,与系统的业务逻辑无关。
  • 遵循类之间的迪米特法则会是一个系统的局部设计简化,因为每一个局部都不会和远距离的对象有直接的关联。但是,这也会造成系统的不同模块之间的通信效率降低,也会使系统的不同模块之间不容易协调。

因此,前人总结出,一些方法论以供我们参考:

  1. 优先考虑将一个类设置成不变类。
  2. 尽量降低一个类的访问权限。
  3. 谨慎使用Serializable
  4. 尽量降低成员的访问权限。

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