设计模式七大原则的演变

设计原则

一、单一职责(高内聚,低耦合的指导方针)

为什么要有单一职责?
复用角度:一个类承担的职责越多,被复用的可能性就越小。
变化角度:当其中一个职责发生吧变化,可能会影响到其他职责的运作。
案例分析

getConnection()方法用于连接数据库,findCustomers()方法用户查询所有的客户信息,createChart()用户创建图表,displayChart()用于显示图表。一个CustomerDataChart类具有四个职能,而这四个职能的变化都会引起CustomerDataChart类的变化。复用性和和维护性都受到了限制,现在使用单一职责对其进行重构。

优化后

我们将上面的类按照职能的不同划分为三个类
CustomerDataChart类--处理与图表有关的操作
CustomerDAO类--处理对数据表的增删改查有关操作
DBUtil类--处理与数据库的连接有关操作

二、开闭原则(抽象化)

可复用的第一块基石
相对稳定的抽象层+灵活的具体层
对可变性封装原则:找到系统的可变因素,并将其封装起来。

三、里式替换(开闭原则的重要方式之一)

在软件中将一个基类对象替换成它的子类对象,程序将不会产生任何错误和异常,反过来则不成立。如果一个软件实体使用的是一个子类对象的话,那么它不一定能够使用基类对象。
在程序中尽量使用基类类型来对对象进行定义,而在运行时再确定其子类类型。

四、依赖倒置(针对接口编程)

针对接口编程,不要针对具体实现编程,具体类写在配置文件中。
针对抽象层编程,将具体类的对象通过依赖注入的方式注入到其他对象
依赖注入的三个方式

  • 构造注入
  • 设值注入(Setter注入)
  • 接口注入

案例分析

优化后:

五、接口隔离

客户不应该依赖哪些它不需要的接口。
案例分析

优化后:

六、迪米特法则

一个软件实体应当尽可能少与其他实体发生相互作用。
通过引入一个合理的“第三者”来降低现有对象之间的耦合度。
案例分析

优化后

七、合成复用

优先使用对象组合,而不是继承来达到复用的目的。
在一个新的对象里通过关联关系(包括组合,聚合)来使用一些已有的对象,使之成为新对象的一部分。
案例分析

优化后

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Elsa~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值