当前位置: 首页 > news >正文

SOLID原则

S.O.L.I.D 是面向对象设计(OOD)和面向对象编程(OOP)中的几个重要编码原则(Programming Priciple)的首字母缩写。
SRP: The Single Responsibility Principle 单一责任原则
OCP: The Open Closed Principle 开放封闭原则
LSP: The Liskov Substitution Principle 里氏替换原则
LD: The law of Demeter 迪米特法则
ISP: The Interface Segregation Principle 接口分离原则
DIP: The Dependency Inversion Principle 依赖倒置原则

一,单一职责原则
改变类的原因只有一个。即每个类只做一种类型责任,当这个类有多个责任的时候,要将类分解。

二,开闭原则
对扩展开放,对修改关闭。
开闭原则是面向对象设计中最基础的设计原则,也是定义最模糊的原则。开闭原则可以总结为:用抽象构件框架,用实现扩展细节。
其他的5大原则和23中设计模式的目的就是遵循开闭原则。单一职责原则告诉我们实现类要职责单一;里氏替换原则告诉我们不能破坏继承体系;依赖倒置原则告诉我们要面向接口编程;接口隔离原则告诉我们在设计接口的时候要精简单一;迪米特法则告诉我们要降低耦合。

三,里氏替换原则
子类尽量不要覆盖父类的方法。
子类可以扩展父类的功能,但不能改变父类原有的功能。
①子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。
②子类中可以增加特有的方法。
③当子类的方法重载父类的方法时,方法的后置条件(即方法的返回值)要比父类更严格。
④当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。

四,迪米特法则
也叫最少知道原则,一个对象应该对其他对象保持最小的了解。就是一个类对自己依赖的类知道的越少越好。
关于“迪米特法则”的其它表述还有:只与你的朋友们通信,不要与“陌生人”说话。
设计模式中的Facade模式和Mediator模式就是使用了这一原则,降低模块间的耦合。

五,接口分离原则
使用多个专门的接口比使用单一的总接口要好。

六,依赖倒置原则
高层模块不应该依赖于底层模块,而这都应该依赖于抽象。抽象不应该依赖于细节,细节应该依赖于抽象。

相关文章:

  • json注意事项
  • golang与protobuf
  • protobuf在ubuntu安装
  • protobuf中数据格式与类型
  • potobuf生成文件
  • GO get下载困难问题
  • c语言二叉树
  • 丹华资本与区块链
  • hyperledger生成证书命令
  • crypto-config.yaml
  • 纯净版crypto-config.yaml文件
  • hyperledger生成peer和order
  • golang实现web服务器
  • ActiveMQ消息队列
  • export对环境变量进行设置
  • JavaScript-如何实现克隆(clone)函数
  • Angular 响应式表单 基础例子
  • Centos6.8 使用rpm安装mysql5.7
  • co模块的前端实现
  • IndexedDB
  • Java,console输出实时的转向GUI textbox
  • JavaScript中的对象个人分享
  • leetcode讲解--894. All Possible Full Binary Trees
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • PAT A1050
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 从重复到重用
  • 老板让我十分钟上手nx-admin
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 前端面试之闭包
  • 如何胜任知名企业的商业数据分析师?
  • 思否第一天
  • 思维导图—你不知道的JavaScript中卷
  • 责任链模式的两种实现
  • 栈实现走出迷宫(C++)
  • Java总结 - String - 这篇请使劲喷我
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • (02)vite环境变量配置
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (二)PySpark3:SparkSQL编程
  • (十) 初识 Docker file
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • (转)c++ std::pair 与 std::make
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • (转)nsfocus-绿盟科技笔试题目
  • (转)人的集合论——移山之道
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • .md即markdown文件的基本常用编写语法
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复
  • .net mvc部分视图
  • .NET Reactor简单使用教程
  • .net 中viewstate的原理和使用
  • .net中生成excel后调整宽度