OPP七大设计原则

2021-01-13  本文已影响0人  YuKalix

一、单一职责原则(Single Responsiblity Principle, SRP)

一个类负责一项职责
一个类只做一件事

二、开闭原则(Open Closed Principle, OCP)

一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。在程序需要拓展的时候,不能去修改原有的代码
使用接口和抽象类

三、里氏替换原则(Liskov Substitution Principle, LSP)

继承与派生的规则(子类可替换父类),子类可以做父类做的事
衍生类能够在基类的基础上增加新的行为
对开闭原则的补充

四、依赖倒转原则(Dependency Inversion Principle, DIP)

高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。即针对接口编程,不要针对实现编程。
依赖倒转的核心思想是:面向接口编程

造汽车举例子:
  假如,造汽车的第一步是:造车轮
  第二步是:根据车轮的大小造车底
  第三步是:根据车底的大小造车身
  最后一步是:根据车身的大小造出汽车。
  那么这个过程中的依赖关系是:汽车依赖于车身的设计,车身依赖于车底的设计,车底依赖于车轮的设计。
  各部分“零件”都互相依赖着,最后也能够把汽车组装成功.然而动一处牵其全身.

正确的方式:
首先,要创建四个接口,分别是,轮子,车底,车身,汽车。这四个接口里各自约定一些方法,比如说轮子的接口中,写一个带参的轮子尺寸方法。然后比如造汽车,造的是小轿车轮子的话,那么写一个实现这个接口的实现类,类名是小轿车车轮。要是现在突然又有新的需求,要造卡车轮子,那再写一个实现类来实现这个车轮的接口即可,其实这里用到了一个其他的原则(开闭原则:对修改关闭,对扩展开放),接口中的方法呢,是之前约定好的东西,是不允许修改的
接口的存在最主要的目的就是为了便于扩展、和维护。
依赖倒转原则是针对接口的,高层模块和底层模块都是依赖于抽象(接口)的。

五、接口隔离原则(Interface Segregation Principle, ISP)

建立单一接口,不要建立庞大臃肿的接口,尽量细化接口,接口中的方法尽量少。
move()
walk()
run()

六、组合/聚合复用原则(Composite/Aggregate Reuse Principle, CARP)

尽量使用组合和聚合少使用继承的关系来达到复用的原则。

# 推荐方式
move():
  walk()
  run()
# 不建议使用继承方式
class move:
    pass

class walk(move):
    pass

class run(move):
    pass

七、最小知识原则(迪米特法则)(Principle of Least Knowledge, PLK)

一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立
高内聚,低耦合(high cohesion low coupling)。

上一篇下一篇

猜你喜欢

热点阅读