从入门到入土-基础篇-4 OO原则与设计模式

面向对象

首先说说面向对象:
这个大家都知道 语言就是这么设计的 我不想面向对象那也不行啊? 但是面试官总是会问这个问题,以前我面试上品网的时候总监问了我 为什么要面向对象,毕竟为了饭碗咱也不能怼人家是吧:
那就把面向对象的好处说出来就好了:

  1. 容易维护
    面向对象思想设计的机构,可读性是比较高的,即使改变了功能,那么在继承存在的情况下也是局部模块的修改(相对来说的啊) ,那么相对来说维护成本是低一些的;

  2. 质量高
    经过一系列的封装,好多代码不用重复的写,所以不但开发速度快了,那么成品的质量也是经过检验的。

  3. 效率高
    在开发的过程中,程序是根据需要对现实的实物进行抽象,然后再产生类,用这样的方法解决问题让我们的思路更清晰,更贴近于现实所以开发效率会高。(但是我感觉这都是废话说了跟没说一样)

  4. 易扩展
    由于继承、封装、多态的特性,自然设计出高内聚、低耦合的系统结构,使得系统更灵活、更容易扩展,而且成本较低。

OO六大设计原则

  1. 单一职责原则(SRP)
  2. 开放封闭原则(OCP)
  3. 里氏替换原则(LSP)
  4. 依赖倒置原则(DIP)
  5. 接口隔离原则(ISP)
  6. 迪米特法则(LOD)

面向对象(OO)的基本特征:

抽象,先不考虑细节
封装,隐藏内部实现
继承,复用现有代码
多态,改写对象行为

单一职责的好处:

  • 类的复杂性降低,因为只干一件事
  • 可读性提高,复杂性降低了自然提高了可读性
  • 可维护性提高,可读性提高了自然更加易于维护
  • 变更的风险性降低,变更时只修改引起变化的类、接口或者方法,其他不受影响
  1. 里氏替换原则:子类不能改变 父类的 契约,即 子类不能override 父类的方法, 可以有条件 overload;输入参数更宽松, 返回参数 更严格;LSP

  2. 依赖倒置原则:面向接口,所有的 底层类和高层类(具体业务逻辑)都依赖上层的 接口定义;DIP

  3. 最小接口原则: 接口或抽象类的 定义 要 包含尽量少的 方法声明;ISP

  4. 迪米特原则:对依赖的对象了解尽量少的信息;通过中间层的 对象了解;

  5. 组合/聚合原则:多用组合,少用继承;因为 组合可用更灵活的“复用”对象所属类的 代码,并且可用在runtime(运行时)动态改变对象的行为; 使用继承则子类全盘接受 父类的 方法实现(遵守里氏替换原则),并且无法运行时动态改变方法实现;所以 需要 “封装变化”,再 组合之; strategy 模式 很好的体现了这个原则;

  6. 开闭原则:软件代码(类级别)对修改关闭,对扩展开放;这个是理论上的;OCP

实际的设计/开发过程应该是: 先做领域模型,理解业务上要做什么事情,期望拿到什么价值;这个阶段切忌思考 如何抽象接口/类,如何设计类; 第二 考虑 设计层面有哪些需要抽象,有哪些依赖,具体方法接口如何设计; 最后才考虑 用哪种模式,那个包来实现

再简单的说下分布式的CAP原则:

CAP原则又称CAP定理,指的是在一个分布式系统中,
一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。
CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值