SOLID: The First 5 Principles of Object Oriented Design(oop的5大基础原则)

S - Single-responsiblity Principle(单一职责原则)A class should have one and only one reason to change, meaning that a class should have only one job. (一个类只应该做一件事),让一个方法或者类的职责尽可能的单一。一个方法的职责单一很容易做到。

ex: 这是一个不好的实践,违反了单一的职责,在这个计算面积的方法,计算两个不同形状的面积。所以违反了simple responsibility principle(SRP)。

违反了SRP原则

正确的实践方法是将计算每个不同形状方法都分开,如下所示

计算Circle的方法以及包含的类
计算square的类以及其对应的方法

这样写出来的方法就很纯粹都只干一件事情,也就是计算对应形状的面积。

对于一个类来说,也需要遵守SRP原则,原则如何遵守呢,如果一个类中的private方法过多的话,就可以整理一下这些private方法是否是和当前的类所做的事情保持一致,否则的话可以把这些方法抽出来到一个单独的类中。


O - Open-Closed Principle(开闭原则)

开闭原则的定义是:对象或实体应该对扩展开放,对修改关闭。通俗的来讲,当业务发生变化的时候,不需要修改原有的方法的存在逻辑。只需要将添加一个新的方法或者新的类来扩展新的功能。还是拿计算不同形状来举举例子,如果把计算不同形状的都杂糅在一个if else的block中,现在的方法是可以计算square和circle,如果在未来的需求中,我们还需要计算椭圆形的话,就需要继续添加if else block,这是个很不好实践。无论是对于测试还是,后续功能的扩展。

违反OCP原则的实践

什么样的实践是一个比较好实践呢,我们可以使用策略模式来代替if else block,首先定义一个接口,公开暴露给别人,外界只需要知道这个接口可以计算不同的类型形状的面积,需要告诉这个接口,我们要计算的形状是什么就行了

策略模式
策略模式具体实现

对于新的Area calculator,直接加一个新的类实现这个形状计算的接口即可,不需要改变原有逻辑,直接扩展就即可。

L - Liskov Substitution Principle(Liskov替换原则)

I - Interface Segregation Principle(接口隔离原则)

D - Dependency Inversion Principle(依赖倒置原则)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容