【设计模式】原则

来源:互联网 发布:质数算法流程图 编辑:程序博客网 时间: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.合成表示AB的一部分,A不能脱离B而存在,是整体与部分的关系

2.聚合表示A包含BBA的组成部分,B可以脱离A而存在

1.使用多个专门的接口,而不使用单一的总接口。一个接口只代表一个角色,每个角色都有特定的接口;接口仅仅提供客户端需要的行为,将不需要的行为隐藏起来。

2.使用ISP原则拆分接口时,必须满足SRP原则。

3.可以采用定制服务的方式,为不同的客户端提供宽窄不同的接口。

举例

电脑内存出问题,更换内存条;

cpu出问题,更换cpu

期末考试的时间安排:任课老师提供试题,教秘安排时间,学生在规定时间进行考试,任课老师与学生不必因为考试时间发生直接的关系

合成:翅膀和大雁

聚合:雁群和大雁

做加减乘除运算时,应有自单个的接口,加法执行加法接口,减法执行减法接口而不是加法和减法都执行运算的接口


0 0