SOLID设计原则
Single Responsibility Principle单一职责原则
单一职责原则(SRP)表明一个类有且只有一个职责。
一个类就像容器一样,它能添加任意数量的属性、方法等。
然而,如果你试图让一个类实现太多,很快这个类就会变得笨重。
任意小的改变都将导致这个单一类的变化。当你改了这个类,你将需要重新测试一遍。
如果你遵守 SRP,你的类将变得简洁和灵活。
每一个类将负责单一的问题、任务或者它关注的点,这种方式你只需要改变相应的类,只有这个类需要再次测试。
SRP 核心是把整个问题分为小部分,并且每个小部分都将通过一个单独的类负责。

Open Close Principle 开闭原则
开放封闭原则(OCP)指出,一个类应该对扩展开放,对修改关闭。
这意味一旦你创建了一个类并且应用程序的其他部分开始使用它,你不应该修改它。
为什么呢?因为如果你改变它,很可能你的改变会引发系统的崩溃。
如果你需要一些额外功能,你应该扩展这个类而不是修改它。使用这种方式,现有系统不会看到任何新变化的影响。
同时,你只需要测试新创建的类。

Liskvo Substitution Principle 里氏替换原则
里氏替换原则指出,派生的子类应该是可替换基类的,也就是说任何基类可以出现的地方,子类一定可以出现。
值得注意的是,当你通过继承实现多态行为时,如果派生类没有遵守LSP,可能会让系统引发异常。
所以请谨慎使用继承,只有确定是“is-a”的关系时才使用继承。

Interface Segregation Principle 接口隔离原则
接口隔离原则(ISP)表明类不应该被迫依赖他们不使用的方法,也就是说一个接口应该拥有尽可能少的行为,它是精简的,也是单一的。

Dependency Inversion Pronciple 依赖反转原则
依赖倒置原则(DIP)表明高层模块不应该依赖低层模块,相反,他们应该依赖抽象类或者接口。
这意味着你不应该在高层模块中使用具体的低层模块。
因为这样的话,高层模块变得紧耦合低层模块。
如果明天,你改变了低层模块,那么高层模块也会被修改。
根据DIP原则,高层模块应该依赖抽象(以抽象类或者接口的形式),低层模块也是如此。
通过面向接口(抽象类)编程,紧耦合被移除。
那么什么是高层模块,什么是低层模块呢?
通常情况下,我们会在一个类(高层模块)的内部实例化它依赖的对象(低层模块),这样势必造成两者的紧耦合,任何依赖对象的改变都将引起类的改变。

文字引用:https://www.cnblogs.com/OceanEyes/p/overview-of-solid-principles.html#_label0

最新文章

  1. 【读书笔记】2016.12.10 《构建高性能Web站点》
  2. myeclipse中如何修改项目的名称
  3. Mongodb学习笔记一(Mongodb环境配置)
  4. Valid Sudoku
  5. Winform退出程序
  6. linux 下安装redis以及php Redis扩展
  7. java web第一个Servlet程序
  8. zepto源码研究 - zepto.js (zepto.init)
  9. Openlayer 3 最简单的弹出框
  10. asp.net mvc 接入阿里大于 短信验证码发送
  11. Redhat更换yum源
  12. 8.4 GOF设计模式三: 外观模式 Facade
  13. Java高级特性 第11节 JUnit 3.x和JUnit 4.x测试框架
  14. Directory /home/hdfs/name is in an inconsistent state: storage directory does not exist or is not a
  15. [转帖]"微信支付"勒索病毒制造者被锁定 传播、危害和疫情终极解密 --- 可以学习下一年火绒团队的分析原理的精神.
  16. CStringArray error C2248: 'CObject::CObject' : cannot access private member declared in class
  17. 【CF662C】Binary Table 按位处理
  18. Educational Codeforces Round 45 (Div 2) (A~G)
  19. 数学中的Sin和Cos是什么意思?(转)
  20. 【BZOJ】2705: [SDOI2012]Longge的问题

热门文章

  1. python 正则匹配
  2. 【leetcode】bash脚本练习
  3. 初撩RESTful
  4. vector注意事项
  5. Java异常架构与异常关键字
  6. python语法学习
  7. Android中如何搭建一个WebServer
  8. Shell基础(五):sed基本用法、使用sed修改系统配置、sed多行文本处理、sed综合脚本应用
  9. HDU - 1712 (分组背包模板)
  10. [7.18NOIP模拟测试5]星际旅行 题解