码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 设计模式七大设计原则


    目录

    1、单一责任原则

    Single Responsibility Principle

    2、里氏替换原则liskov substitution principle

    3、依赖倒置原则dependence inversion principle

    4、接口隔离原则interface segregation principle

    5、迪米特原则law of demeter 

    6、开闭原则open closed principle 

    7、合成复用原则Composite Reuse Principle


    1、单一责任原则

    Single Responsibility Principle

    一个类或者一个方法只负责一项职责,尽量做到类的只有一个行为原因引起变化;、

    降低类之间的耦合性。

    比如责任链模式:避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。


    2、里氏替换原则
    liskov substitution principle

    子类可以扩展父类的功能,但不能改变原有父类的功能;

      (目的:增强程序的健壮性)实际项目中,每个子类对应不同的业务含义,使父类作为参数,传递不同的子类完成不同的业务逻辑。

    具体实例理解:

    23种设计模式-里氏替换原则_俺是农村的的博客-CSDN博客_使用里氏替换原则解决实际问题23种设计模式-里氏替换原则https://blog.csdn.net/qq_32923295/article/details/124518947


    3、依赖倒置原则
    dependence inversion principle

            面向接口编程;(通过接口作为参数实现应用场景),抽象就是接口或者抽象类,细节就是实现类

      意思是上层模块不应该依赖下层模块,两者应依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象;

            通俗点就是说变量或者传参数,尽量使用抽象类,或者接口;

    比如我们的回调

    Java通过接口实现回调_yizhesong的博客-CSDN博客一、思路Java通过接口来实现CallBack 操作步骤1.class A,class B,MyCallBack 接口2.class A实现接口MyCallBack 对应的方法X3.class B拥有一个参数为callback接口类型的方法Y(MyCallBack callback)4.class A中的Z方法,运行时调用class B中Y方法,以自身传入参数5.class B已取得A,就可以随时回调A所实现的MyCallBack 接口中的X方法二、具体实现步骤MyCallBack 接口phttps://blog.csdn.net/yizhesong/article/details/111464962


    4、接口隔离原则
    interface segregation principle

    建立单一接口;(扩展为类也是一种接口,一切皆接口)

       定义:

        a.客户端不应该依赖它不需要的接口;

        b.类之间依赖关系应该建立在最小的接口上;

    简单理解:复杂的接口,根据业务拆分成多个简单接口;(对于有些业务的拆分多看看适配器的应用)

    【接口的设计粒度越小,系统越灵活,但是灵活的同时结构复杂性提高,开发难度也会变大,维护性降低】  

    具体实例:

    接口隔离原则 - 杨远 - 博客园


    5、迪米特原则
    law of demeter 

        又叫作最少知识原则(The Least Knowledge Principle),一个类对于其他类知道的越少越好,就是说一个对象应当对其他对象有尽可能少的了解, 尽量降低类与类之间的耦合。简写: LOD


    6、开闭原则
    open closed principle 

    软件中的对象(类,模块,函数等等)应该对于扩展是开放的,但是对于修改是封闭的

    装饰着模式是完美的体现


    7、合成复用原则
    Composite Reuse Principle

    ··在面向对象设计中,可以通过两种方法在不同的环境中复用已有的设计和实现,即通过组合/ 聚合关系或通过继承。

        但首先应该考虑使用组合/聚合,组合/聚合可以使系统更加灵活,降低 类与类之间的耦合度,一个类的变化对其他类造成的影响相对较少;

            其次才考虑继承,在使用继承时,需要严格遵循里氏代换原则,有效使用继承会有助于对问题的理解,降低复杂度,而滥用继承反而会增加系统构建和维护的难度以及系统的复杂度,因此需要慎重使用继承复用。

  • 相关阅读:
    OpenAI重大更新!为ChatGPT推出语音和图像交互功能
    【Cherno的C++视频】Stacks vs heap in C++
    【pytorch笔记】第五篇 torchvision,Dataloader,nn.Module的使用
    day008--mysql中的字符串函数
    elasticsearch小技能:地理坐标的mapping的设计
    WZOI-207双胞胎数
    提交Spark作业遇到的NoSuchMethodError问题
    Flink系列文档-(YY04)-Flink编程基础API-Transformation算子
    51单片机K型热电偶温度采集及控制温控模块MAX6675热电偶LCD1602
    走进ERP管理系统:企业信息化的加速器
  • 原文地址:https://blog.csdn.net/yizhesong/article/details/126058719
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号