首页 > 其他分享 >SOLID设计原则

SOLID设计原则

时间:2023-06-01 16:22:08浏览次数:45  
标签:功能 调用 原则 SOLID 子类 接口 设计 父类

单一责任原则(SRP)
一个类只能有一个职责(一个功能)
![U7I(QNLB{I@T{RHTHJ4)22.png
例子:支付接口(支付有非常多中方式但是每一种方式都是支付)此时就需要让抽象类去调用需要调用的类,而不是调用一个类,类中包含的非常多的功能
优点:减少类中不相关功能的代码耦合,使得类更加的健壮;另外,单一职责原则也适用于模块之间解耦,对于模块的功能划分有很大的指导意义
开闭原则(OCP)
开闭式原则其实在做出单一原则的时候就已经在实现开闭原则了
8758f228-31b2-4092-9aa5-396f9ba7871b.jpg
抽象父类可以调用单一原则的子类,而固定有的子类里面的功能就不需要再子类里面再去修改或者是去再已有的子类内部去构造新的功能,正确的做法应该是在存放单一原则子类的包中去新增子类,在新增子类中写新的功能
优点: 有了开闭原则,面向需求的变化就能进行快速的调整实现功能,这大大提高系统的灵活性,可重用性和可维护性

里氏替换原则(LSP)
在共同的方法中提取到父类中去
在里式替换原则中,父类有的行为方法是稳定的
所以子类不应该去重写这些稳定的方法
image.png
父类中固定的子类是不能去进行修改的(例子:父类有一个抽象子类对象<鸟>以及固定的功能动作<鸟会飞>)但是当父类固定的子类中出现了多个功能原则首先会违反单一原则以及开闭原则,如果要实现父类中可调用多个子类对象的话可以抽象到子类中去然后让父类进行固定子类中的调用。
换句话说就是子类可以扩展功能,但是不能对父类的功能做出修改
优点: 里氏替换原则目的就是要保证继承关系的正确性,所有子类的行为功能必须和使用者对其父类的期望保持一致,如果子类达不到这一点,那么必然违反里氏替换原则
接口隔离原则(ISP)
代码开发中客户端需要依赖的接口一定是要有实际运用的,其次这些接口功能都放在单一的一个接口中的话,代码会十分的臃肿。接口隔离原则就是让这些接口能放在一个软件包中,如果有需要则调用其中的接口,接口隔离原则也包括单一原则,里式替换原则等等
008i3skNgy1gu0u8iwfj3j612h0u0wh102.jpg![%UVT%OVQ58J6$`R3V%56O9.png
优点: 防止暴露给客户端无相关的代码和方法,保证了接口的高内聚,降低与客户端的耦合。
依赖倒置原则(DIP)
父类并不会直接依赖子类,而是通过抽象工具类来进行依赖,首先能遵循前面的设计原则其次也可以保证高层与底层、抽象层的关系image.png
优点: 依赖倒置原则可以减少类间的耦合性,提高系统的稳定性,降低并行开发引起的风险,提高代码的可读性和可维护性。

标签:功能,调用,原则,SOLID,子类,接口,设计,父类
From: https://www.cnblogs.com/s186/p/17449392.html

相关文章

  • OmniGraffle Pro for mac ——强大而易用的Mac图形设计软件
    OmniGrafflePro是一款强大而易用的Mac图形设计软件,它可以帮助您快速创建各种类型的图表、流程图、示意图、平面图等。无论您是要制作工作报告、学术研究、个人项目或者其他任何需要图形展示的场合,OmniGrafflePro都可以满足您的需求。该软件具有丰富的绘图工具和模板库,支持自定......
  • 【活动回顾】Databend 数据库表达式框架设计与实现 @GOTC
    5月28日,“全球开源技术峰会GOTC2023”圆满落幕。在本次会上,Databend数据库的优化器研发工程师骆迪安作为嘉宾中的一员,在rust专题专区分会场进行了一次主题为《Rust实现的先进SQL Parser与高效表达式执行框架—Databend数据库表达式框架设计与实现》的演讲。演......
  • Solidity基础
    Solidity基础RemixIDERemixIDE通常使用网页端:RemixSolidity中文文档:https://learnblockchain.cn/docs/solidity/Solidity基础:源文件布局声明许可证标识符://SPDX-License-Identifier:MIT用来标明代码的开源与否,开源许可如何声明编译指示:pragmasolidity......
  • Solidity语法
    Solidity语法数据类型(值类型)uint(unity,int),整数型可保存0,以及正整数范围:2**256 - 1,2的256次方address(地址类型,是合约语言的特殊数据类型)160位值,不允许操作;适合存储合约地址或外部人员密钥对地址具有balance属性,返回该帐户可用的以太币数量tr......
  • 客制化404页面设计上需要注意几点?
    404页面设计注意事项:1、首先404页面要保持网站统一模板,设计风格,logo及名称,不要让用户弄不清自己到了哪个网站上。2、404页面应该在最醒目的位置显示错误信息,明确提示用户,要访问的页面不存在。还可以加上几点可能性,如页面已删除,用户输入了错误的地址,链接中的地址错误,页面已转移到新......
  • 《平衡掌控者――游戏数值经济设计》pdf电子书免费下载
    本书由真正从事游戏行业工作的一线人员所著,书中的全部案例来自真实的游戏设计案例。全书共7章,第1章介绍数值策划在职场中的发展路线,第2章介绍Excel在数值工作中的实战应用,第3章介绍MMORPG经济系统设计,第4章介绍MMORPG经济系统实现,第5章介绍两个VBA模拟案例,第6章介绍运营策划和与数......
  • golang实现设计模式之构建者模式总结-代码、优缺点、适用场景
    构建者模式也是一种创建型的设计模式,该模式将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的对象。大白话就是,构建者模式,从输出角度看依然是创建个对象实例,但是构建者模式更关注创建的细节,或者说一个对象的创建可以拆分为多个步骤,所有的步骤完成才创建出这个对......
  • 智能化档案馆温湿度监控系统设计依据
    1、《中华人民共和国档案法》2、《中华人民共和国档案实施办法》3、GB/T9386-1988《计算机软件测试文件编制规范》4、GB/T15532-1995《计算机软件单元测试规范》5、GB/T30961-2014嵌入式软件质量度量6、GB2421-89电工电子产品基本环境试验规程7、GB16796-2009安全防范......
  • Go设计模式
    Go-设计模式整理参考:Go设计模式24-总结(更新完毕)-Mohuishou(lailin.xyz)go设计模式实现,包含23种常见的设计模式实现设计模式学习的重点是什么?设计原则,以及设计模式的使用场景和优缺点,实现相对来说还没有那么重要如果是常见的设计模式是武术招式,那么设计原则就是内......
  • Ubuntu 17.04 壁纸设计大赛 已经开幕
    Ubuntu团队成员NathanHaines向外媒Softpedia知会了一场全新的“FreeCultureShowcase”活动——为即将到来的Ubuntu17.04(ZestyZapus)操作系统征集壁纸。需要指出的是,这场壁纸设计大赛并不会有任何奖励。但如果你的作品有幸成为最终被选中的12组入围作品的一员......