设计模式之六大设计原则[通俗易懂]

设计模式之六大设计原则

大家好,又见面了,我是全栈君。

         在上篇博文中提到了开放—封闭原则,没有细谈。这次我们来总结一下设计模式的几大原则。

         1开放—封闭原则:是指软件实体(类、模块、函数等)应该能够扩展,可是不可改动。

         对原则的理解:开闭原则是最具有理想主义色彩的一个原则,它是面向对象设计的终极目标,以下所要介绍的几个原则能够看成是为了符合开闭原则所作的努力和解决的方法。

对于开闭原则通俗的理解就是。能不改就不改。能少改尽可能的少改。周所周知,物质是运动的,世界是变化的,想要让一个事物永恒不变是不可能的,所以要想让软件绝对符合开闭原则是不可能的。

         2单一职责原则(SRP):就一个类而言,应该仅有一个引起它变化的原因。

         通俗来讲,就是一个类或者是一个模块仅仅干一件事,或者说这个类或者模块仅仅扮演一种角色。它仅仅需将自己负责的活儿干好即可。其它的一概无论,绝对不能瞎掺和。

比方我们在做软件的时候,定义了一个类是负责连接数据库的,至于连接上之后的数据操作就交给其它的函数去做。别都自己揽过来。到时候万一要换数据库那就麻烦了。

         3依赖倒转原则:A 高层模块不应该依赖底层模块。

两个都应该依赖抽象。B 抽象不应该依赖细节,细节应该依赖抽象。

         通俗来说,就是要针对接口编程,不要针对实现编程。在面向过程的软件开发时。为了能够实现代码复用,一般会吧经常使用的一些代码写成函数,大量的函数就组成了函数库,这样在做新的项目时。就能够去调用这些底层的函数,这就是所谓的高层模块依赖底层模块。而我们要达到的目的是高层模块和低层模块没有非常强的耦合性。不论什么一方都能够非常easy的被复用,这样我们就要想办法对他们之间的接口进行设计和编程,在复用的时候仅仅需改动接口或者抽象类就可以。

         4里氏代换原则:子类型必须可以替换掉它们的父类型。

         这个原则的定义非常短,相信应该不难理解。说白了就是一个软件实体假设使用的是一个父类的话,那么将父类都替换成它的子类。则程序依然能够编译通过。而且正常执行。

能够说里氏代换原则是继承复用技术的基础。举个样例。动物类为父类。猫,狗。牛,羊为其子类。当我们实例化一个动物类的对象:动物 animal= new 猫()后。猫具有了父类动物的吃喝拉撒等方法。而当用狗替换掉猫即:动物 animal =new 狗(),依然能够编译执行,没有不论什么不和谐的地方。这就是里氏代换原则的体现。

         5迪米特法则:假设两个类不必彼此直接通信。那么这两个类就不应当发生直接的相互作用。假设当中一个类须要调用还有一个类的某一个方法的话。能够通过第三者转发这个调用。

         对原则的理解:迪米特法则有一个别名叫做最少知识原则,其核心的思想就是尽可能的减少类与类之间的耦合性,说白了就是不要和陌生类交流,就如同我们要找人办事一样,能帮得了你的人。你不认识,那么你就会找一个你认识的同一时候对方也认识的人做中间人,让这个中间人来帮你传达你的意思,这样就能非常好地完毕你想要做的事。

         6合成/聚合复用原则:尽量使用合成/聚合,尽量不要使用类继承。

         所谓聚合表示的是一种弱的拥有关系。体现的是A对象能够包括B对象。但B对象不是A对象的一部分;合成则是一种强的拥有关系。体现了严格的部分和总体的关系。部分和总体的生命周期一样。

在编程中优先使用对象的合成/聚合将有助于保持每一个类被封装。并被集中在单个任务上。这样类和类继承层次会保持较小规模。而且不太可能增长为不可控制的庞然大物。

         我们在进行软件设计的时候,尽量遵循以上原则。力争写出可维护,可复用,可扩展,灵活性好的代码。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/116537.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • JAVA设计模式之门面模式(外观模式)[通俗易懂]

    医院的例子  现代的软件系统都是比较复杂的,设计师处理复杂系统的一个常见方法便是将其“分而治之”,把一个系统划分为几个较小的子系统。如果把医院作为一个子系统,按照部门职能,这个系统可以划分为挂号、门诊、划价、化验、收费、取药等。看病的病人要与这些部门打交道,就如同一个子系统的客户端与一个子系统的各个类打交道一样,不是一件容易的事情。  首先病人必须先挂号,然后门诊。如果医生要求化验,病人必

  • Java设计模式之迭代子模式

    本文继续介绍23种设计模式系列之观察者模式。定义在软件构建过程中,集合对象内部结构常常变化各异,但对于这些集合对象,我们希望在不暴露其内部结构的同时,可以让外部客户代码透明地访问其中包含的元素;同时这种“透明遍历”也为同一种算法在多种集合对象上进行操作提供了可能。使用面向对象技术将这种遍历机制抽象为“迭代器对象”为“应对变化中的集合对象”提供了一种优雅的方式。迭代子(Iterator)模式又叫游标

  • JAVA设计模式——适配器模式

    JAVA设计模式——适配器模式适配器模式是一种结构型设计模式。适配器模式的思想是:把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。用电器来打个比喻:有一个电器的插头是三脚的,而现有的插座是两孔的,要使插头插上插座,我们需要一个插头转换器,这个转换器即是适配器。适配器模式涉及3个角色:源(Adaptee):需要被适配的对象或类型,相当于插头。适配器(Ad

  • Java设计模式之状态模式

    本文属于”23种设计模式”系列,介绍状态模式。

  • 设计模式之抽象工厂模式代码示例

    设计模式之抽象工厂模式代码示例

  • 设计模式(4)-对象创建型模式-Prototype模式

    设计模式(4)-对象创建型模式-Prototype模式

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号