六大程序设计原则 + 合成复用原则

这篇具有很好参考价值的文章主要介绍了六大程序设计原则 + 合成复用原则。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录
  • Global Diagram
  • 依赖倒置原则(依赖抽象接口,而不是具体对象)
  • 单一职责原则(类、接口、方法)
  • 开闭原则 (扩展开放,修改关闭)
  • 里氏替换原则(基类和子类之间的关系)
  • 接口隔离原则(接口按照功能细分)
  • 最少知道原则 (类与类之间的亲疏关系)
  • 合成复用原则(Composite Reuse Principle)

其实没有什么设计模式,所谓的设计模式,只是在OOP( 面向对象程序设计)领域内,一些前人总结出来的最佳工作实践而已,可以说是一种拆箱即用的工作模版。

学习设计模式的坏处:

  • 经典的23种设计模式,涵盖的场景很多,学习成本高;
  • 很多模式相互交叉,相互可以转换,让人难以分辨。学习设计模式是为了解决业务问题,但是本末倒置,却钻牛角尖去研究设计模式里面的奥妙了;

不要为了设计而设计,这种行为就行一个小孩在大人衣柜前胡乱的穿搭着大人的西装。
设计模式,应该是在工作有需求之后才来学习(不要担心来不及),累积了很多场景在心中之后,一通百通。而不是还未熟悉编程,就本末倒置。


程序设计领域的设计模式的六大设计原则 + 合成复用原则(Composite Reuse Principle) ,都是一些很的思想(它们既可以指这个,也可以代指那个),无法生搬硬套,无法做到很具体的指导,我的建议是,有空多看几遍、多思考看看怎么能运用在实际项目中,在未来时保佑自己在设计程序时能联想到即可。

矛盾性的思考:
有时在面对一个复杂需求时,可能会面临满足了这个原则就会矛盾另一个原则的情况,这种就得做必要的取舍。

关于记忆的一些个人见解:
设计模式、设计原则...,我觉得都是不要去记忆它,而是通过你工作中的项目代码、网上好的项目代码,去做归纳总结、去发现一些特征。自己不断的总结提炼,我觉得这样才会形成自己的软件设计原则,硬背下来的,还是不灵活的。

Global Diagram

六大程序设计原则 + 合成复用原则

依赖倒置原则(依赖抽象接口,而不是具体对象)

  • 它强调了高层次模块不应该依赖于低层次模块,而是应该依赖于抽象(接口)。这个原则有助于降低类之间的耦合度,提高系统的可维护性和可复用性。
  • 依赖倒置原则要求我们将具体的实现类通过接口或者抽象类进行抽象,以便高层次模块不需要知道低层次模块的具体实现细节。这样,当低层次模块发生改变时,高层次模块不需要进行任何修改,只需要重新配置依赖关系即可。

单一职责原则(类、接口、方法)

  • 一个类(接口、方法)只承担一个职责;
  • 变更引起的风险降低。变更是必然的,如果单一职责原则遵守得好,当修改一个功能时,可以显著降低对其他功能的影响;

开闭原则 (扩展开放,修改关闭)

  • 对已经完成的程序来说,最佳的维护状态是,只对扩展开放,对修改关闭

里氏替换原则(基类和子类之间的关系)

  • 这个原则的核心思想是,如果一个类继承自另一个类,那么子类可以替换父类进行任何操作,前提是不能违反程序的原始行为。这要求子类的方法实现不能违背父类的规范和约束;
  • 子类可以扩展父类的功能,但不能改变父类原有的功能;
  • 只要父类出现的地方,子类就也可以出现,而且替换为子类后不会出现任何错误;

接口隔离原则(接口按照功能细分)

  • 要求程序员尽量将臃肿庞大的接口拆分成更小的和更具体的接口,让接口中只包含客户感兴趣的方法;
  • 核心就是:不要让用户、接口实现者去实现不相关的功能;
  • 这个和单一职责原则有点重复;

最少知道原则 (类与类之间的亲疏关系)

  • 最小化权限;

合成复用原则(Composite Reuse Principle)

  • 尽量使用对象组合/聚合,而不是继承关系达到软件复用的目的;
  • 合成或聚合可以将已有对象纳入到新对象中,使之成为新对象的一部分,因此新对象可以调用已有对象的功能;

有些编程语言就没有继承概念,只有组合、复用概念,各自的好坏有待辩证吧。文章来源地址https://www.toymoban.com/news/detail-684160.html

到了这里,关于六大程序设计原则 + 合成复用原则的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 设计模式之六大设计原则

    学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您: 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持,想组团高效学习… 想写博客但无从下手,急需写作干货注入能量… 热爱写作,愿意让自己成为更好

    2024年02月02日
    浏览(48)
  • 面向对象设计的六大原则(SOLID原则)-——单一职责原则

    单一职责原则(Single Responsibility Principle, SRP)是面向对象编程和设计的五大SOLID原则之一。它强调一个类、方法或模块应该只有一个职责,即只做一件事情。如果一个类承担的职责过多,那么它的可维护性、可读性和可扩展性都会受到影响。当需要修改类的某个职责时,可能

    2024年03月12日
    浏览(93)
  • 面向对象设计的六大原则(SOLID原则)-——开闭原则

    开闭原则(Open-Closed Principle, OCP)是面向对象设计的五大SOLID原则之一。这个原则主张“软件实体(类、模块、函数等)应该对扩展开放,对修改关闭”。也就是说,软件的设计应该允许在不修改原有代码的情况下增加新的功能。这样的设计有助于降低代码的复杂性和维护成本

    2024年03月12日
    浏览(62)
  • C#设计模式六大原则之--接口隔离原则

    设计模式六大原则是单一职责原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特法则、开闭原则。它们不是要我们刻板的遵守,而是根据实际需要灵活运用。只要对它们的遵守程度在一个合理的范围内,努为做到一个良好的设计。本文主要介绍一下.NET(C#) 接口隔离

    2024年02月11日
    浏览(43)
  • C#设计模式之--六大原则 开闭原则

    设计模式六大原则是单一职责原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特法则、开闭原则。它们不是要我们刻板的遵守,而是根据实际需要灵活运用。只要对它们的遵守程度在一个合理的范围内,努为做到一个良好的设计。本文主要介绍一下.NET(C#) 开闭原则

    2024年02月10日
    浏览(49)
  • 设计模式的六大原则

    1、单一职责原则,其核心就是控制类的粒度大小、将对象解耦、提高其内聚性; 2、开闭原则,可以通过“抽象约束、封装变化”来实现(对扩展开放(提供方),对修改关闭(使用方),遵循其他规则最终就是遵循开闭原则,所以开闭是最重要的一个原则); 3、里氏替换

    2024年02月09日
    浏览(42)
  • 设计模式——设计模式以及六大原则概述

    设计模式代表有经验的面向对象软件开发人员使用的最佳实践。 设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。 这些解决方案是由许多软件开发人员在相当长的时间内通过试错获得的。 在 1994 年,由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 四

    2024年02月13日
    浏览(50)
  • (学习打卡2)重学Java设计模式之六大设计原则

       前言:听说有本很牛的关于Java设计模式的书——重学Java设计模式,然后买了(*^▽^*) 开始跟着小傅哥学Java设计模式吧,本文主要记录笔者的学习笔记和心得。 打卡!打卡! 单一职责原则、开闭原则、里氏替换原则、迪米特法则、接口隔离原则、依赖倒置原则。 (引读:

    2024年02月03日
    浏览(51)
  • C#设计模式六大原则之--迪米特法则

    设计模式六大原则是单一职责原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特法则、开闭原则。它们不是要我们刻板的遵守,而是根据实际需要灵活运用。只要对它们的遵守程度在一个合理的范围内,努为做到一个良好的设计。本文主要介绍一下.NET(C#) 迪米特法

    2024年02月11日
    浏览(45)
  • Python 程序设计入门(025)—— 使用 os 模块操作文件与目录

    Python 内置了 os 模块及其子模块 os.path,用于对目录或文件进行操作。在使用 os 模块及其子模块 os.path 模块时,需要使用 import 导入该模块,才能使用它们提供的函数或方法。 1、os 模块提供的操作目录的函数 os 模块提供的操作目录的函数如下表所示: 函数 说明 getcwd() 返回当

    2024年02月11日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包