面向对象设计的基本原则 -- 周总结

发布于: 2020 年 06 月 17 日

避免程序设计和代码设计的坏味道,面向对象设计的基本原则可以很好的帮我们处理这些问题,设计出合理的程序和代码。

开闭原则:对修改关闭,对新增开放

对修改关闭,那怎么修改需求,添加功能呢? 就是通过新增!

映射到代码上就是对原有逻辑类的修改狙击,把新逻辑添加到新的类中

比如以下的策略模式+工厂模式的例子,可以完全消灭if else,完全消灭修改,只需要新增新的算法类

依赖倒置原则:高层不依赖于低层,而是大家都依赖于抽象接口

以下图片可以说明,我们平时使用的service依赖DAO,就是一种高层依赖低层的做法,当低层需要做替换时,就难以实现,必须高层和低层关联修改,代码耦合度高。

下图的思路就是,高层不依赖于低层实现,高层定义接口,低层依赖接口去实现

里氏替换原则:任何基类可以出现的地方,子类一定可以出现,就是任何地方,子类可以替换父类。

因为继承带来的侵入性,增加了耦合性,也降低了代码灵活性,父类修改代码,子类也会受到影响,此时就需要里氏替换原则。

经典的例子就是长方形和正方形,子类不能替换父类,这是一种违反里氏替换原则的例子。

单一职责原则:每一个类的功能尽量单一,一个类只有一个引起它变化的原因。

如果违反这个原则,程序会变得:

脆弱性 :把绘图和计算功能耦合在一起,当修改其中一个时,另一个功能可能会意外受损。

不可移植性 : 计算几何应用只需要使用“计算面积”的功能,却不得不包含GUI的依赖。

接口分离原则:不应该强迫客户依赖他们不需要的方法

如下类图,假如客户端直接依赖cache类,则他会拥有rebuild方法,但是这个方法他们不需要,也不应该对他们开放,当客户端误操作此方法时,则会造成缓存失效。

所以要分离这个类中的方法到两个接口中,保证客户端只看到他需要的方法,避免混乱和开发失误。

本周架构师训练营的面向对象设计的基本原则,是一个值得重复学习,不断回味的问题,遵循这些原则,可以是我们设计出合理的程序,作为架构师更加是不可或缺哦。

发布于: 2020 年 06 月 17 日 阅读数: 9
用户头像

独孤魂

关注

还未添加个人签名 2019.04.10 加入

还未添加个人简介

评论

发布
暂无评论
面向对象设计的基本原则 --周总结