#   面向对象遵循的原则: SOLID
# S(Single Responsibility Principle)
# 单一职责原则
# 一个类只负责一项职责
# 好处
# 易于维护, 写出高内聚的代码
# 易于代码复用
# 案例
# 我们之前写的计算器类
# 假设只包含加减乘除运算和结果打印
# 如果往后需要增加, 结果写入文件, 结果参与其他运算, 结果上传服务器...
# 是不是每一次都需要去修改此类? 就导致这个类变得特别臃肿; 不利于维护和部分代码复用
# 解决方案
# 计算器只包含, 加减乘除运算以及结果返回
# 根据不同情况, 将对结果的处理分散到其它合适的类别中 # O(Open Closed Principle)
# 开放封闭原则
# 对扩展开放
# 对修改关闭
# 易于维护, 保证代码安全性以及扩展性
# 案例
# 我们之前写的, 在Person类中, 写的, 让小狗小猫工作的方法
# 假设小狗小猫的工作方法名分别是watch和catch;
# 那Person类中让宠物工作的方法就需要通过if进行多分支判定
# 如果以后, 扩展了新的宠物类; 那么, Person类中的让宠物工作的方法, 必须要跟着修改
# 解决方案
# 通过基类, 以及抽象类等方案进行方法的统一 # O(Open Closed Principle)
# 开放封闭原则
# 对扩展开放
# 对修改关闭
# 易于维护, 保证代码安全性以及扩展性
# 案例
# 我们之前写的, 在Person类中, 写的, 让小狗小猫工作的方法
# 假设小狗小猫的工作方法名分别是watch和catch;
# 那Person类中让宠物工作的方法就需要通过if进行多分支判定
# 如果以后, 扩展了新的宠物类; 那么, Person类中的让宠物工作的方法, 必须要跟着修改
# 解决方案
# 通过基类, 以及抽象类等方案进行方法的统一 # L(Liskov Substitution Principle) L(Liskov Substitution Principle) # I(Interface Segregation Principle)
# 接口分离原则
# 如果一个类包含了过多的接口方法,而这些方法在使用的过程中并非"不可分割", 那么应当把他们进行分离
# 所谓接口, 在Python中, 可以简单的理解为"抽象方法"
# 好处
# 提高接口的重用价值
# 案例
# 小鸟
# 吃, 叫, 飞
# 上述接口设计在有鸵鸟类的前提下, 设计就不合理 # D(Dependency Inversion Principle)
# 依赖倒置原则
# 高层模块不应该直接依赖低层模块
# 他们应该依赖抽象类或者接口
# 好处
# 利于代码维护
# 案例
# 电脑类, 依赖的不是某一个具体鼠标类
# 而应该是, 鼠标类的抽象
# 能单击, 能双击, 能右击, 能移动鼠标指针...
# 到时, 可以是触摸板, 也可以是有线鼠标, 也可以是蓝牙鼠标...

最新文章

  1. 2016 daily
  2. javascript优化--11模式(设计模式)02
  3. SAP ST05数据跟踪使用
  4. ASP.NET 系列:RBAC权限设计
  5. Activity启动方式
  6. java新手笔记28 文件
  7. Python闭包与函数对象
  8. 剑指offer35 第一个只出现一次的字符
  9. c# 正则表达式的用户
  10. shell脚本调用C语言之字符串切分之strtok函数
  11. 第13章 Linux的网络管理
  12. Spring+SpringMVC+MyBatis深入学习及搭建(十六)——SpringMVC注解开发(高级篇)
  13. lua 匹配空白符
  14. Django session相关操作
  15. 实验楼-高级Bash脚本编程指南
  16. [CocoaPods]使用Gemfile
  17. Linux 运行进程实时监控pidstat命令详解
  18. 每个大主播都是满屏弹幕,怎么做到的?Python实战无限刷弹幕!
  19. jmeter创建数据库测试计划
  20. 子序列匹配(search,find_end,search_n)

热门文章

  1. 搭建一个SSM框架
  2. DICOM:docker实现DICOM服务虚拟化
  3. 五月的仓颉大神写的 三年java程序员面试感悟 值得分享给大家
  4. Android 切换主题以及换肤的实现
  5. Android 触摸及手势操作GestureDetector
  6. null!= xxx 和 xxx!=null有什么区别?
  7. linux一台机器文件传到另一台机器上
  8. shop++源码反编译----随笔
  9. jQuery.ajax jQuery.post
  10. "AppServer"--->UDP--->"LogWriteServer"