编程法侧

刚入手时感觉这个理由那个理由不如自己自由发挥,但写出来的代码实在太乱,维护难度非常大。苦硬自己设计时去多想这些法则,结果最好代码大大改观。

1.开闭法侧 OCP. 模块应该易于扩展(开放),但免于修改(关闭)。

这样的结构是易于扩展,相互隔离,实现的技术是动态多态。

2.依赖反转法则 DIP

 依赖抽象而不依赖具体。

高层模块不再依赖于含有实现细节的模块,而是依赖抽象的接口。通过抽象的接口取代被依赖的中间层,保证了上层结构的稳定。

3.接口隔离法则 ISP

 不应该强迫客户端依赖于它们用不上的方法。因不同的客户需要划分多个不同的专用接口。

type

TSports=class(Tobject)

 procedure Run;

 procedure Fly;

 procedure jump;

 procedure cycle;

end;

//将上面这个类改进分隔为以下,当然分隔是按需求进行的

 IOpicA=class(IInterface)

['{0CBC0EC1-BCDC-418C-A35E-595D2DE78029}'

 procedure Run;

 procedure Fly;

end;

IOpicB=class(IInterface)

['{0CBC0EC1-BCDC-418C-A35E-595D2DE78019}'

 procedure jump;

 procedure cycle;

end;

4.单一职责法则 SRP

 一个类应该公有一个原因导致其变化。“一个原因”好比工作人员的职责,比如小区一个保安,假定他的职责是检查进出车辆,那么只有当有车进或有车出时,将会触发他上前进行检查。当一个类包含多个职责,且它们的关系错综复杂时,分离不当,会有循环依赖问题。这时可以用接口隔离法则进行分离。

原文地址:https://www.cnblogs.com/carcode/p/12507903.html