面向对象六大原则

面向对象六大原则

面向接口编程(面向抽象编程)、 职责单一、 对修改关闭、对扩展开放、

  1. 优化代码第一步 --> 单一职责原则

    英文全称是 Single Responsibility Principle ,缩写式 SRP。
    一个类中,应该仅有一个引起它变花得原因。简单说,一个类中应该是一组相关性很高得函数、数据封装。

  2. 让程序更稳定更灵活 --> 开闭原则

    英文全称是 Open Close Principle。是Java世界里最基础的设计原则,它指导我们如何建立一个稳定、灵活的系统。
    开闭原则的定义是:软件中的对象(类、模块、函数等)应该对于扩展是开放的,对于修改是关闭的。简单说就是在软件需要变化的时候应该通过扩展的方式(继承 重写方法)来修改,不能对原有已经经过测试的代码进行修改。

  3. 构建扩展性更好的系统 --> 里氏替换原则

    英文全称是 Liskov Substitution Principle,缩写是 LSP。
    第一种定义:如果对每一个类型为 S 的对象 O1,都有类型为 T 的对象 O2,使得以 T 定义的所有程序 P 在所有的对象 O1 都换成 O2 时,程序 P 的行为没有发生变化。
    第二种定义:所有引用基类的地方必须能透明的使用其子类的对象。

    面向对象语言的三大特点时继承、封装、多态。里氏替换原则就是依赖于继承多态这两大特性。
    例如:Window、View、TextView …、这三者直接的关系。

    里氏替换原则的核心原理是抽象,抽象又依赖于继承,在 OOP 当中 继承的优缺点相当明显:
    优点:
    1. 代码重用,减少创建类的成本,每个子类都拥有父类的方法和属性。
    2. 子类于父类基本相似,但又于父类有所区别。
    3. 提高代码的可读性。
    缺点:
    1. 继承是侵入性的,只要继承就必须拥有父类的所有属性和方法。
    2. 可能会造成子类代码冗余、灵活性降低,因为子类必须拥有父类的属性和方法。

    开闭原则和里氏替换原则往往是生死相依、不离不弃。通过里氏替换来达到对外扩展开放,对修改关闭的效果。这两个原则同时强调了 OOP 一个重要思想 (抽象)。

  4. 让项目拥有变化能力 --> 依赖倒置原则

    英文全称 Dependence Inversion Principle ,缩写是 DIP 。
    依赖导致原则指代了一种特定的解耦方形式,是的高层次的模块不依赖于低层次的模块的实现细节的目的,依赖模块被颠倒了。
    依赖倒置原则的关键点:

    1. 高层次模块不应该依赖低层次模块,两者都应该依赖于抽象。
    2. 抽象不应该依赖于细节。
    3. 细节应该依赖于抽象。

    在 Java 语言中,抽象就是指接口或抽象类,两者都是不能直接被实例化的;细节就是实现类,实现接口或继承抽象类而产生的类就是细节,其特点是可以直接被实例化。高层次模块就是调用端,低层次模块就是就是具体实现类。
    在 Java 语言中表现得是: 模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或抽象类产生的。
    一句话就是面向接口编程或者面向抽象编程。

  5. 系统有更高的灵活性 --> 接口隔离原则

    英文全称是 Interface Segregation Principles ,缩写是 ISP。
    ISP 的定义是:
    1. 客户端不应该依赖它不需要的接口。
    2. 类间的依赖关系应该建立在最小的接口上。

    接口隔离原则将非常庞大、臃肿的接口拆分更小更具体的接口,这样使用者只需要知道他们感兴趣的方法就可以了。其目的就是为了系统耦合度更低,从而容易重构、更改或者重新部署。

  6. 更好的扩展性 --> 迪米特原则

    英文全称 Law of Demeter 缩写是 LOD,也称为最少知识原则(Least Knowledge Principle)。

    迪米特原则定义是:一个对象应该对其他对象有最少的了解。通俗的说就,一个类应该对自己需要耦合或调用的类知道的最少,类内部如何实现与调用者或者依赖者是没有关系的,调用者或者依赖着只需要知道它需要的方法就可以了。

    迪米特原则还有一个英文解释: Only talk to your immedate friends,翻译过来就是至于直接的朋友通信。每个对象都必然会与其他对象有耦合关系,两个对象之间耦合就成为朋友关系,这种关系的类型有很多,如组合、聚合、依赖等。

    来源《Android 源码设计模式解析与实战》

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值