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.baileySOLID Development Principles – In Motivational Pictures很好的解释了SOLID原则。

单一责任原则: 
当需要修改某个类的时候原因有且只有一个(THERE SHOULD NEVER BE MORE THAN ONE REASON FOR A CLASS TO CHANGE)。换句话说就是让一个类只做一种类型责任,当这个类需要承当其他类型的责任的时候,就需要分解这个类。 
 

开放封闭原则 
软件实体应该是可扩展,而不可修改的。也就是说,对扩展是开放的,而对修改是封闭的。这个原则是诸多面向对象编程原则中最抽象、最难理解的一个。

里氏替换原则 
当一个子类的实例应该能够替换任何其超类的实例时,它们之间才具有is-A关系 
  
依赖倒置原则
1. 高层模块不应该依赖于低层模块,二者都应该依赖于抽象 
2. 抽象不应该依赖于细节,细节应该依赖于抽象 

接口分离原则 
不能强迫用户去依赖那些他们不使用的接口。换句话说,使用多个专门的接口比使用单一的总接口总要好。

这几条原则是非常基础而且重要的面向对象设计原则。正是由于这些原则的基础性,理解、融汇贯通这些原则需要不少的经验和知识的积累。上述的图片很好的注释了这几条原则。

最新文章

  1. Intent传递list<bean>集合
  2. iOS 遍历AutoLayout约束
  3. 使用redis-dump进行Redis数据库合并
  4. hdu 4023 Game 博弈论
  5. 前端异步解决方案——mmDeferred
  6. 哇!今天找到一个非常好用的自动补全插件-necomplete.vim
  7. 关于IE7 兼容问题
  8. PHP获取图片颜色值,检测图片主要颜色的代码:
  9. Object-Widgets-Quick 构造树
  10. 【转】Python中实现远程调用(RPC、RMI)简单例子
  11. BZOJ_2343_[Usaco2011 Open]修剪草坪 _单调队列_DP
  12. 《利用Python进行数据分析·第2版》
  13. Java核心-多线程-并发控制器-CyclicBarrier同步屏障
  14. JAVA中使用LOG4J记录日志(转)
  15. MySql常用命令集Mysql常用命令showdatabases;显示数据库createdatab
  16. Excel 保护工作表
  17. HDU 6118 度度熊的交易计划 (最小费用流)
  18. studio显示Surface: getSlotFromBufferLocked: unknown buffer: 0xa2a58be0
  19. SPI编程1:用户空间的读写操作
  20. 转载 : JSP取得绝对路径

热门文章

  1. OracleHelper数据库事务处理
  2. 基于.Net Framework 4.0 Web API开发(5):ASP.NET Web APIs AJAX 跨域请求解决办法(CORS实现)
  3. 孙鑫MFC学习笔记19:动态链接库
  4. CentOS 6.6 新安装系统的网络IP配置
  5. 【CSS3】 理解CSS3 transform中的Matrix(矩阵)
  6. [deviceone开发]-HeaderView和FooterView的示例
  7. DOM事件类型详解
  8. css3中的animation
  9. JavaScript异步机制
  10. web代理工具WebScarab