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

设计模式之六大设计原则

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java设计模式之结构型:装饰器模式

    Java设计模式之结构型:装饰器模式

    2021年10月4日
    38
  • 设计模式之代理模式XXOO

    设计模式之代理模式XXOO定义代理模式可以分为两种,一种是静态代理,一种是动态代理。静态代理:代理类一般会持有一个被代理的对象引用,且对于不关心的方法全部委托给被代理的对象处理。自己处理关心的方法。这种代理方式是死板的,它不是在运行时动态创建,它就是硬编码,你代码编译前写的是什么,编译后就是什么。换句话就是你按下CTRL+S的那一刻,就会被代理对象生成一个不可动态改变的代理类。静态代理一般对于代理的对象是单个或者多个固定的类(数量不会太多)使用。效果会比动态代理要好。动态代理:动态代理又分为JDK动

    2022年7月17日
    10
  • 三、设计模式介绍—她是谁,我们要去哪里? #和设计模式一起旅行#

    模式模式(Pattern),指事物的标准样式,百度百科上面说的,其实说白了模式就是我们现在说的套路!模式 == 套路模式是一种思想,说大了特别的复杂和深奥,不管怎么样模式的使用可以解决特定场景下特定的问题!准确表达:模式是在特定环境下人们解决某类重复出现问题的一套成功或有效的解决方案。软件模式那么在软件中使用模式,就是软件模式(Software Pattern),用…

    2022年2月27日
    33
  • 《大话设计模式》笔记-模式0 简单工厂模式

    《大话设计模式》笔记-模式0 简单工厂模式

    2021年9月4日
    50
  • 设计模式总结_用设计模式改造

    设计模式总结_用设计模式改造设计模式总结

    2022年4月22日
    40
  • 设计模式——门面模式「建议收藏」

    设计模式——门面模式「建议收藏」今天我们继续来学习前面没有学完的结构型设计模式中的一种:门面模式。门面模式也是一种不太常用的设计模式。所以,我们今天依旧是了解为主,暂时不去深入的学习。概述门面模式:(FacadeDesignPattern)门面模式也叫外观模式,门面模式为子系统提供一组统一的接口,定义一组高层接口让子系统更易用。门面模式原理和实现也比较简单,应用场景也比较明确,主要在接口设计方面使用。何时使用:解决易用性问题。解决性能问题。解决分布式事务问题。UML类图:角色组成:门面角色:客户端调用这个

    2025年6月6日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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