【转】面向对象设计的SOLID原则
2024-09-28 15:47:57
S.O.L.I.D是面向对象设计和编程(OOD&OOP)中几个重要编码原则(Programming Priciple)的首字母缩写。
SRP | The Single Responsibility Principle | 单一责任原则 |
OCP | The Open Closed Principle | 开放封闭原则 |
LSP | The Liskov Substitution Principle | 里氏替换原则 |
DIP | The Dependency Inversion Principle | 依赖倒置原则 |
ISP | The Interface Segregation Principle | 接口分离原则 |
Steve Smith在5月份的微软TechED 2009上有个SOLIDify Your ASP.NET MVC的讲座, derick.bailey的SOLID Development Principles – In Motivational Pictures很好的解释了SOLID原则。
单一责任原则:
当需要修改某个类的时候原因有且只有一个(THERE SHOULD NEVER BE MORE THAN ONE REASON FOR A CLASS TO CHANGE)。换句话说就是让一个类只做一种类型责任,当这个类需要承当其他类型的责任的时候,就需要分解这个类。
开放封闭原则
软件实体应该是可扩展,而不可修改的。也就是说,对扩展是开放的,而对修改是封闭的。这个原则是诸多面向对象编程原则中最抽象、最难理解的一个。
里氏替换原则
当一个子类的实例应该能够替换任何其超类的实例时,它们之间才具有is-A关系
依赖倒置原则
1. 高层模块不应该依赖于低层模块,二者都应该依赖于抽象
2. 抽象不应该依赖于细节,细节应该依赖于抽象
接口分离原则
不能强迫用户去依赖那些他们不使用的接口。换句话说,使用多个专门的接口比使用单一的总接口总要好。
这几条原则是非常基础而且重要的面向对象设计原则。正是由于这些原则的基础性,理解、融汇贯通这些原则需要不少的经验和知识的积累。上述的图片很好的注释了这几条原则。
最新文章
- Intent传递list<;bean>;集合
- iOS 遍历AutoLayout约束
- 使用redis-dump进行Redis数据库合并
- hdu 4023 Game 博弈论
- 前端异步解决方案——mmDeferred
- 哇!今天找到一个非常好用的自动补全插件-necomplete.vim
- 关于IE7 兼容问题
- PHP获取图片颜色值,检测图片主要颜色的代码:
- Object-Widgets-Quick 构造树
- 【转】Python中实现远程调用(RPC、RMI)简单例子
- BZOJ_2343_[Usaco2011 Open]修剪草坪 _单调队列_DP
- 《利用Python进行数据分析&#183;第2版》
- Java核心-多线程-并发控制器-CyclicBarrier同步屏障
- JAVA中使用LOG4J记录日志(转)
- MySql常用命令集Mysql常用命令showdatabases;显示数据库createdatab
- Excel 保护工作表
- HDU 6118 度度熊的交易计划 (最小费用流)
- studio显示Surface: getSlotFromBufferLocked: unknown buffer: 0xa2a58be0
- SPI编程1:用户空间的读写操作
- 转载 : JSP取得绝对路径
热门文章
- OracleHelper数据库事务处理
- 基于.Net Framework 4.0 Web API开发(5):ASP.NET Web APIs AJAX 跨域请求解决办法(CORS实现)
- 孙鑫MFC学习笔记19:动态链接库
- CentOS 6.6 新安装系统的网络IP配置
- 【CSS3】 理解CSS3 transform中的Matrix(矩阵)
- [deviceone开发]-HeaderView和FooterView的示例
- DOM事件类型详解
- css3中的animation
- JavaScript异步机制
- web代理工具WebScarab