资讯专栏INFORMATION COLUMN

Java设计模式七大原则

Olivia / 3245人阅读

摘要:单一职责原则开闭原则里氏替换原则依赖倒置原则接口隔离原则迪米特法则组合聚合复用原则单一职责原则高内聚低耦合定义不要存在多于一个导致类变更的原因。建议接口一定要做到单一职责,类的设计尽量做到只有一个原因引起变化。使用继承时遵循里氏替换原则。

单一职责原则

开闭原则

里氏替换原则

依赖倒置原则

接口隔离原则

迪米特法则

组合/聚合复用原则

单一职责原则(Single Responsibility Principle)——高内聚、低耦合
定义:不要存在多于一个导致类变更的原因。通俗的说,一个类只负责一项职责,应该仅有一个引起它变化的原因。
适用于:模块、类、接口、方法。
优点:
降低复杂度;提高可读性,系统的可维护性;降低变更引起的风险。
建议:接口一定要做到单一职责,类的设计尽量做到只有一个原因引起变化。

开闭原则(Open Close Principle)—— 高内聚、低耦合
定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。
面对新需求,对程序的改动是通过增加新代码进行的,而不是更改现有的代码。
经典的话说:过去的事已成为历史,是不可修改的,因为时光不可倒流,但现在或明天计划做什么,是可以自己决定(即扩展)的。
怎样的设计才能面对需求的改变却可以保持相对稳定,从而使得系统可以在第一个版本后不断推出新的版本呢?开放-封闭。
在发生小的变化时,就及早去想办法应对发生更大变化的可能。
等到发生变化时立即采取行动。创建抽象来隔离以后发生的同类变化。
开发人员应该对程序中频繁变化的那部分做出抽象。
拒绝不成熟的抽象和抽象本身一样重要。

里氏替换原则(Liskov Substitution Principle)——低耦合
定义:子类型必须能够替换掉它们的父类型。
里氏替换原则通俗的来讲就是:子类可以扩展父类的功能,但不能改变父类原有的功能。
子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。
子类中可以增加自己特有的方法。
如果不遵循里氏替换原则,代码出现问题的几率会大大的增加。

依赖倒置原则(Dependence Inversion Principle)
定义:高层模块不应该依赖底层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象;即针对接口编程,不要针对实现编程。
程序中所有的依赖关系都终止于抽象类或者接口,那就是面向对象的设计,反之那就是过程化的设计。
这个是开闭原则的基础。
“面向接口编程”——OOD(Object-Oriented Design,面向对象设计)的精髓之一。
在实际编程中,我们一般需要做到如下3点:
底层模块尽量都要有抽象类或接口,或者两者都有。
变量的声明类型尽量是抽象类或接口。
使用继承时遵循里氏替换原则。

接口隔离原则(Interface Segregation Principle)——高内聚
含义:建立单一接口,尽量细化接口,接口中的方法尽量少。
为各个类建立专用的接口。
在程序设计中,依赖几个专用的接口要比依赖一个综合的接口更灵活。
运用接口隔离原则,一定要适度,接口设计的过大或过小都不好。
设计接口的时候,只有多花些时间去思考和筹划,才能准确地实践这一原则。

迪米特法则(Law Of Demeter)——松耦合
迪米特法则又叫最少知道原则,通俗的来讲,就是一个类对自己依赖的类知道的越少越好。
也就是说,对于被依赖的类来说,无论逻辑多么复杂,都尽量地的将逻辑封装在类的内部,对外除了提供的public方法,不对外泄漏任何信息。
迪米特法则还有一个更简单的定义:只与直接的朋友通信。
一句话总结就是:一个对象应该对其他对象保持最少的了解。

组合/聚合复用原则(Composition/Aggregation Reuse Principle )——松耦合
尽量使用合成和聚合,而不是集成来达到复用的目的。
该原则就是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分,新的对象通过向这些对象的委派达到复用已有功能的目的。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/68401.html

相关文章

  • 设计模式之软件设计七大原则

    摘要:引申意义子类可以扩展父类的功能,但不能改变父类原有的功能。含义当子类的方法实现父类的方法时重写重载或实现抽象方法,方法的后置条件即方法的输出返回值要比父类更严格或相等。优点约束继承泛滥,开闭原则的一种体现。降低需求变更时引入的风险。 0x01.开闭原则 定义:一个软件实体如类,模块和函数应该对扩展开放,对修改关闭 要点: 当变更发生时,不要直接修改类,而是通过继承扩展的方式完成变...

    ixlei 评论0 收藏0
  • java七大设计原则

    摘要:在我们做系统设计时,经常会设计接口或抽象类,然后由子类来实现抽象方法,这里使用的其实就是里氏替换原则。 1.开闭原则(Open Close Principle/OCP) 定义:一个类、模块和函数应该对扩展开放,对修改关闭。 开放-封闭原则的意思就是说,你设计的时候,时刻要考虑,尽量让这个类是足够好,写好了就不要去修改了,如果新需求来,我们增加一些类就完事了,原来的代码能不动则不动。这个...

    Prasanta 评论0 收藏0
  • php设计模式

    摘要:我们今天也来做一个万能遥控器设计模式适配器模式将一个类的接口转换成客户希望的另外一个接口。今天要介绍的仍然是创建型设计模式的一种建造者模式。设计模式的理论知识固然重要,但 计算机程序的思维逻辑 (54) - 剖析 Collections - 设计模式 上节我们提到,类 Collections 中大概有两类功能,第一类是对容器接口对象进行操作,第二类是返回一个容器接口对象,上节我们介绍了...

    Dionysus_go 评论0 收藏0
  • php设计模式

    摘要:我们今天也来做一个万能遥控器设计模式适配器模式将一个类的接口转换成客户希望的另外一个接口。今天要介绍的仍然是创建型设计模式的一种建造者模式。设计模式的理论知识固然重要,但 计算机程序的思维逻辑 (54) - 剖析 Collections - 设计模式 上节我们提到,类 Collections 中大概有两类功能,第一类是对容器接口对象进行操作,第二类是返回一个容器接口对象,上节我们介绍了...

    vspiders 评论0 收藏0
  • 5分钟学会Java9-Java11的七大新特性

    摘要:来来来,花分钟看看的七大新特性,还有代码样例。本地是指方法内的变量声明。从开始,这个正式进入标准库包。同步请求会阻止当前线程。可喜的是,如果尝试改变不可变集合,会通过发出警告是在中引入的,增加了三个新方法。 现在Java有多元化的发展趋势,既有JS又有C++还有C#的影子,不学习那是不行滴。来来来,花5分钟看看Java9-Java11的七大新特性,还有代码样例。Java11 发布了,然...

    xuhong 评论0 收藏0

发表评论

0条评论

Olivia

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<