面向对象设计原则: 
单一职责原则 SRP :
  一个类或者行为只做一件事 。
 降低代码冗余,提高可重用性,可维护性,可扩展性,可读性 使用组合形式
 
里氏替换原则 LSP : 
所有引用基类的地方必须能够透明的使用子类。
如果类型S 的对象O1  ,都有类型为T 的对象O2  , 那么T 定义的所有程序在所有对象O1 都替换成O2 时, 程序没有变化。
爸爸能干的儿子都能干,引用爸爸的地方一定可以引用儿子。
 
依赖倒置原则 DIP : 
属于里氏替换原则的补充
面向抽象编程:  关键词: 接口,抽象
依赖: 一个对象O1 需要实现某一个功能时必须让另一个对象O2的某一个功能先实现,那么他们就存在依赖关系O1依赖于O2。
依赖注入 IOC:  将依赖的部分O2 作为O1 的属性注入,注入一定是抽象的。
 
接口隔离原则 ISP : 
客户端不应该依赖于那些他不需要的接口
一旦一个接口太大,则需要将他分隔成一些更细小的接口,使用该接口的客户端只需要知道与之相关的方法即可
 
迪米特里法则 LOD : 
每一个软件单位对其他单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位
不要和陌生人说话: 
当前对象this 
以参数形式传入当前对象方法中的对象
当前对象的成员对象
如果当前对象是一个集合,那么集合中的元素都属于朋友
当前对象自己创建的对象
 
开闭原则 OCP : 
对扩展开放,对修改关闭。
EVP ---  对可变性封装原则:找到系统中可能引起系统改变的因素,并将它封装起来
 
聚合复用原则 / 合成复用原则  ARP/CRP
尽量使用对象组合,而不是继承来达到复用的目的
黑箱复用,耦合度相对较低,选择性的调用成员对象的操作,可以在运行时动态进行
 

最新文章

  1. android模块混淆打包时,泛型丢失
  2. codeforces CF475 ABC 题解
  3. Couchbase
  4. Linux用户组与用户组进阶命令
  5. 新版本的pdo会有这个问题
  6. (一)学习C#之浮点类型float小结
  7. 利用脚本将EXCEl表倒入PowerDesigner中
  8. 后端分布式系列:分布式存储-HDFS NameNode 设计实现解析
  9. Kali学习笔记18:OpenVAS使用
  10. .NET Core中使用Docker
  11. gulp 配置达到实现import export支持
  12. 直接提交一个form表单后台返回一个新页面通过target属性可以放到iframe当中
  13. iOS开发-仿微信图片分享界面实现
  14. Redis的两种连接方式
  15. 使用Oracle PROFILE控制会话空闲时间
  16. JavaScript 闭包解决计数器问题
  17. hdu 4686 Arc of Dream(矩阵快速幂)
  18. 2017-2018 ACM-ICPC Pacific Northwest Regional Contest (Div. 1) M - Unsatisfying 2-Sat
  19. python开发_tkinter_单选按钮
  20. git的常见问题

热门文章

  1. 基于zookeeper的MySQL主主负载均衡的简单实现
  2. 逻辑回归(LogisticRegression)(未完)
  3. Redis多个数据库
  4. java递归demo---
  5. 关于java中equals与==的区别的小实验
  6. 交互原型设计软件axure rp学习之路(一)
  7. NOIP2014提高组 联合权值(距离为2的树形dp)
  8. EIP权限工作流平台-移动端
  9. C#—反射(反射类型、方法、构造函数、属性、实现可配置可扩展、数据库访问类反射封装)
  10. 成为高手前必懂的TCP干货