【设计模式】原则
来源:互联网 发布:质数算法流程图 编辑:程序博客网 时间:2024/05/23 11:54
面向对象三大基本特征是继承、封装和多态,其思想特点是高内聚,低耦合;多聚合,少继承。设计模式的原则很好的体现了面向对象的思想,被广泛的运用的设计模式的实践当中。
(一)
开放-封闭OCP
(Open-Closed Principle)
依赖倒转DIP
(Dependency Inversion Principle)
里氏代换LSP
(Liskov Substitution Principle)
主要内容
软件实体(类、模块、函数等等)应该可以扩展,但是不可修改
1.高层模块不应该依 赖低层模块。两个都应该依赖抽象
2.抽象不应该依赖细节。细节应该依赖抽象
子类型必须能够替换掉它们的父类型
概括
可扩展,不可修改
依赖抽象(接口或抽象类)
子类继承父类,子类以父类身份出现
分析
1.面对需求,对程序的改动通过增加新代码,而不是更改现有代码
2.预先猜测变化,构造抽象隔离这些变化
1.与OCP原则相辅相成
2.针对接口编程,不针对实现编程
3.程序中的所有依赖关系终止于抽象类或者接口
1.前提是子类和父类的关系
1.在软件中,父类都替换成它的子类,程序的行为没有变化
举例
期末备考时,复习计划不应该改变,我们可以在复习之余,增加一些其他学习内容
电脑中的cpu、内存、硬盘依赖接口,不依赖主板
猫捉老鼠,猫可以是黑猫、白猫,也可以是小花猫
(二)
单一职责SRP
(Single Responsibility Principle)
迪米特LoD
(Law of Demeter)
合成/聚合复用CRP
(Composite Reuse Principle)
接口隔离ISP(最小知识)
(Interface Segregation Principle)
主要内容
就一个类而言,应该仅有一个引起它变化的原因
如果两个类不必彼此直接通信,那么这两个类就不应该发生直接的相互作用。如果一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用
尽量使用合成/聚合,尽量不要使用类继承
使用多个专门的接口来取代一个统一的接口
概括
功能单一
第三者调用
复用
专门化
分析
1.一个类的职责过多,相当于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力
2.类的职责:数据职责(属性),行为职责(方法)
1.在类的结构上,每一类都应当尽量降低成员的访问权限
2.强调了类之间的松耦合,耦合越弱,越有利于复用,一个处在弱耦合的类被修改,不会对有关系的类造成波及
1.合成表示A是B的一部分,A不能脱离B而存在,是整体与部分的关系
2.聚合表示A包含B,B是A的组成部分,B可以脱离A而存在
1.使用多个专门的接口,而不使用单一的总接口。一个接口只代表一个角色,每个角色都有特定的接口;接口仅仅提供客户端需要的行为,将不需要的行为隐藏起来。
2.使用ISP原则拆分接口时,必须满足SRP原则。
3.可以采用定制服务的方式,为不同的客户端提供宽窄不同的接口。
举例
电脑内存出问题,更换内存条;
cpu出问题,更换cpu
期末考试的时间安排:任课老师提供试题,教秘安排时间,学生在规定时间进行考试,任课老师与学生不必因为考试时间发生直接的关系
合成:翅膀和大雁
聚合:雁群和大雁
做加减乘除运算时,应有自单个的接口,加法执行加法接口,减法执行减法接口…而不是加法和减法都执行运算的接口
- [设计模式] 设计原则
- 设计模式 - 设计原则
- 设计模式 - 设计原则
- 设计模式设计原则
- 设计模式 - 设计原则
- 设计模式,设计原则
- 设计模式设计原则
- 设计模式-设计原则
- 设计模式-设计原则
- 设计模式--设计原则
- 【设计模式原则】设计模式六大原则
- 设计模式:设计模式原则
- 设计模式的原则
- 设计模式的原则
- 设计模式的原则
- 设计模式原则详解
- 设计模式 原则之类
- 设计模式原则详解
- database "mydb" is being accessed by other users
- spring MVC 运行流程
- Linux命令学习笔记:1、文件的相关操作
- JAVA设计模式之策略模式
- ARM#开发指令集(未完)
- 【设计模式】原则
- 神经网络之拟合能力
- ROOT手机后的那些事——Xposed框架
- android发送http post请求函数带参数带返回数据 静态类 源码
- 使用R语言绘制其他图形之相关系数图
- 关于小米手机<input>的一个奇怪的问题
- Transact-SQL进行表中数据操作
- The "sampleIndex" KeyPath Of CABasicAnimation
- 那些年走过的坑——python的win64和win32