面向对象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 里氏替换原则
ISP The Interface Segregation Principle 接口分离原则
DIP The Dependency Inversion Principle 依赖倒置原则
虽然看起来说法很学术,实际在日常的编码过程中,有经验的coder都在有意无意的遵循着这些最佳实践。
简单总结一下自己的理解。
单一职责原则:
1.定义的类型只做自己份内的事情,不开发无所不能的“上帝类”。
例如一个类A定义了各种属性表示状态,那么状态之间的相互关联,相互影响的关系应该在内部逻辑完成。而不要借助另一个类B来操纵A在各种状态中进行转换。
单一原则带来的好处就是得到了类级别的“高内聚”。
开放封闭原则:
1.类,模块,函数对扩展开放,对修改闭合。
既有功能代码(类,模块,方法)不改动或极少改动,只增驾新代码就能添加新功能
具体做法就是在可能需要扩展的地方使用接口,抽象基类进行隔离。当需要加入新的功能时,只需要传入一个新的实现了接口或者基类的类。
例如,开发的数据访问层,用接口或基类来规范访问数据的CRUD各种操作,将来即使需要替换不同类型数据库,甚至改变表结构,都不会影响到其余的各层。对于开发工作的分工好处也很多。并且可以带来单元测试上的便利。只需要自己实现一个接口/基类的类就能够模仿数据层的工作。
里氏替换原则:
说的明白点就是子类型必须能够替换它们的基类型,这个几乎每天都在用,多态就是这么实现的。
体现的是IS-A的关系。
在开发过程中,尽量使用抽象基类/接口作为函数的传入参数。貌似这也体现了开放封闭原则。
接口分离原则:
这个原则的意思是一个接口或者类应该拥有尽可能少的行为。
注意了关键点在尽量少。
接口的设计很容易会失控,不停地添加功能使得一个接口越来越臃肿,导致接口方法越来越多。
其实一种接口就是实现一组相关的操作就可以了。多而全不是一个好的选择。
依赖倒置原则:
高层模块不应该依赖底层模块,两者都应该依赖其抽象。其实就是”面向接口编程,不要面向实现编程“的内在要求。
此原则经常和依赖倒置联系在一起的说法就是“控制反转”,所谓反转,就是高层模块只需要知道干什么就足够了,而底层模块负责怎么做的问题。
另一种说法是细节依赖抽象,抽象不能依赖细节。
-------------
总结一下:
职责单一化,任务好分配:单一原则,接口隔离
稳扎稳打,保持既有成果,开创新功能:开放封闭
指挥发出命令,海陆空三军各自怎么干各自说了算:依赖倒置
作者:Andy Zeng
欢迎任何形式的转载,但请务必注明出处
http://www.cnblogs.com/andyzeng/p/3780763.html
面向对象SOLID原则的自我理解的更多相关文章
- 超易懂!原来SOLID原则要这么理解!
说到 SOLID 原则,相信有过几年工作经验的朋友都有个大概印象,但就是不知道它具体是什么.甚至有些工作了十几年的朋友,它们对 SOLID 原则的理解也停留在表面.今天我们就来聊聊 SOLID 原则以 ...
- 【转】面向对象设计的SOLID原则
S.O.L.I.D是面向对象设计和编程(OOD&OOP)中几个重要编码原则(Programming Priciple)的首字母缩写. SRP The Single Responsibility ...
- 面向对象设计的SOLID原则
S.O.L.I.D是面向对象设计和编程(OOD&OOP)中几个重要编码原则(Programming Priciple)的首字母缩写. SRP The Single Responsibility ...
- 面向对象的SOLID原则白话篇
面向对象的SOLID原则 简介 缩写 全称 中文 S The Single Responsibility Principle 单一责任原则 O The Open Closed Principle 开放 ...
- OOD 面向对象面试干货分享| 面向对象设计的SOLID原则
S.O.L.I.D是面向对象设计和编程(OOD&OOP)中几个重要编码原则(Programming Priciple)的首字母缩写. 简写 全拼 中文翻译 SRP The Single Res ...
- 面向对象涉及SOLID原则
S = Single Responsibility Principle 单一职责原则 O = Opened Closed Principle 开放闭合原则 L = Liscov Substituti ...
- SOLID原则
SOLID是面向对象设计和编程(OOD&OOP)中几个重要编码原则 即:SRP单一责任原则: OCP开放封闭原则: LSP里氏替换原则: ISP接口分离原则: DIP依赖倒置原则. 1. 单一 ...
- Java程序员应当知道的10个面向对象设计原则
面向对象设计原则是OOPS编程的核心, 但我见过的大多数Java程序员热心于像Singleton (单例) . Decorator(装饰器).Observer(观察者) 等设计模式,而没有把足够多的注 ...
- 类设计的SOLID原则
SOLID原则是面向对象范式的核心 单一职责原则(Single Responsible Principle, SRP):对于一个类,应该仅有一个引起它变化的原因.其基础是内聚,表示类完成单一功能的程度 ...
随机推荐
- Python20-Day04
##########迭代器.生成器和面向过程编程########## 一.迭代器 迭代器是一个重复的过程,每次重复即一次迭代,并且每次迭代的结果都是下一次迭代的初始值: l = [1,2,3] cou ...
- 20135313-exp1
北京电子科技学院(BESTI) 实 验 报 告 课程:Java程序设计 班级:1353 姓名:吴子怡 学号:20135313 成绩: 指导教师:娄嘉鹏 实 ...
- 20162314 《Program Design & Data Structures》Learning Summary Of The Second Week
20162314 2017-2018-1 <Program Design & Data Structures>Learning Summary Of The Second Week ...
- 用java构造一个带层次的文件目录遍历器
import java.util.List; import java.io.File; import java.util.ArrayList; public class IteratorUtil { ...
- HDU 3092 Least common multiple 01背包
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3092 Least common multiple Time Limit: 2000/1000 MS ...
- 深入理解Java类加载器(1)
类加载器概述: java类的加载是由虚拟机来完成的,虚拟机把描述类的Class文件加载到内存,并对数据进行校验,解析和初始化,最终形成能被java虚拟机直接使用的java类型,这就是虚拟机的类加载机制 ...
- iOS 判断当前app版本,升级
要获取当前app store上的最新的版本,有两种方法, 一.在某特定的服务器上,发布和存储app最新的版本信息,需要的时候向该服务器请求查询. 二.从app store上查询,可以获取到app的作者 ...
- React监听窗口变化事件
功能说明:本例子采用MUI table组件 + React实现. 需求描述:固定表头,列表高度随浏览器窗口的改变而改变.(本例中当窗口高度小于472像素后,便不作限制) 实现简介:1.监听浏览器窗口, ...
- Spring框架的补充
1.使用xml文件方式配置bean ——property标签ref属性和ref标签区别 <property name=“bean” ref="myBbean" /> r ...
- Beta阶段——第四篇 Scrum 冲刺博客
i. 提供当天站立式会议照片一张: ii. 每个人的工作 (有work item 的ID) (1) 昨天已完成的工作: 充值与账单的数据库操作结合,实现余额功能 (2) 今天计划完成的工作: 用户权限 ...