面向对象的设计原则

下表是面向对象的几大设计原则

设计原则名称定义
单一职责原则(SRP)一个类,只负责一个功能领域中的相应职责
开闭原则(OCP)软件实体应对扩展开放,对修改关闭
里氏代换原则(LSP)所有引用父类对象的地方能够透明的使用其子类的对象
依赖倒转原则(DIP)抽象不应该依赖于细节,细节应该依赖于抽象
接口隔离原则(ISP)使用多个专门的接口,而不使用单一的总接口
合成复用原则(CRP)尽量使用对象组合,而不是集成来达到复用的目的
迪米特原则(LOD)一个软件实体类应当尽可能少地与其他实体发生相互作用
1. 单一职责原则(SRP)
  1. 解耦,增强内聚性(高内聚,低耦合)。

  2. 如果你把多个功能放在一个类中,功能之间就形成了关联,改变其中一个功能,有可能终止另一个功能,这时可能需要新一轮的测试来避免可能出现的问题

  3. 举个例子,我们在绘制图案的时候,用“点”和用“直线”组成图,哪个更灵活点呢?当然是“点”。所以单一职责原则,代表把设计类的时候,尽可能拆分到最小单位,解决复用和组合问题

2. 开闭原则(OCP)
  1. 对扩展开放,对修改关闭

  2. 在设计一个模块(类,方法)的时候,应该可以在不修改原有的模块(修改关闭)的基础上,能扩展其功能(扩展开放)。

  3. 我们写完的代码,不能因为需求变化就修改。我们通过新增代码的方式来解决变化的需求。这是一种理想状态,在现实中,我们需要尽可能的缩小这种修改。

3. 里氏代换原则(LSP)
  1. 子类应当可以替换父类,并出现在父类能够出现的任何地方。子类必须完全实现父类的方法。在类中调用其他类时务必要使用父类或接口,如果不能使用父类或接口,则说明类的设计违背了LSP原则
  2. 子类可以有自己的方法和属性
  3. 覆盖或实现父类的方法时,调用入参应比父类中的大。这样在子类替换父类的时候,调用的仍是父类的方法
  4. 覆盖或实现父类的方法时,输出结果可以被缩小
4. 依赖倒转原则(DIP)
  1. 高层模块不应该依赖低层模块,两者都应该依赖其抽象(抽象类或接口)
  2. 抽象不应该依赖细节(具体实现)。细节应该依赖于抽象
5. 接口隔离原则(ISP)
  1. 不应该强制客户程序依赖它们不需要使用的方法
  2. 一个接口应该只提供一种对外的行为,不应该把所有的操作都封装到一个接口中
6. 合成复用原则(CRP)
  1. 在一个新对象里面使用一些已有的对象,使之成为新对象的一部分

  2. 新的对象通过委派达到复用已有功能的目的

7. 迪米特原则(LOD)
  1. 又叫最少知识原则,一个对象应当对其他对象有尽可能少的了解

  2. 降低各个对象之间的耦合,提高系统的可维护性;在模块之间只通过接口来通信,而不理会模块内部的工作原理

  3. 尽量的封装,尽量的独立,尽量的使用低级别的修饰符。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值