设计七大原则的通俗理解

本文介绍了面向对象编程中的重要原则,如单一职责原则确保类功能专注,接口隔离原则避免接口冗余,开闭原则促进代码可扩展性,里氏转换原则允许安全使用父类引用,依赖倒置原则使代码依赖于抽象,合成复用原则提倡对象组合而非继承,以及迪米特法则减少对象间交互以降低耦合度。
摘要由CSDN通过智能技术生成

在面向对象编程中,所有的原则或设计模式的目的是:高聚合、低耦合、易扩展、易维护、高复用。


1、单一职责原则:类的职责功能要单一,不要一个类包含过多的实现方法,要保证能改变这个类的原因来源只有一个。
        比如,一个类里包含三种方法,数据库连接、数据增查删改、图表绘制和更新,应当改进为三个单独的类分别实现这三个方法。

2.接口隔离原则:类似于单一职责原则,要求一个接口不要包含过多的方法,可以将每个接口实现单独的接口功能。
        和单一职责的区别,个人理解一个是类的层面,一个是接口的层面

3.开闭原则:一个软件实体(可以是类、模块、方法等)对扩展开发(可以扩展),对修改关闭(不可以修改)。

4.里氏转换原则:所有能接受父类对象类型的引用,也必须能透明地使用其子类;可以将这个理解成是一条定律或规范。
        一般的运用场景是,将父类设为抽象类或接口,由子类实现具体的方法,引用父类作为参数类型,运行时再引用具体的子类实例,这样可以实现开闭原则,即不改变源代码,通过这个原则来进行扩展或维护。


5.依赖倒置原则:这是一种手段(方法/措施),即抽象不可依赖细节,细节需要依赖抽象(抽象是爷)
        即用层次高的抽象类或接口作为类型来声明数据类型、参数类型、返回值类型等,而不是用具体的类来作为作为数据类型。
        依赖倒置的三种用法(俗称依赖注入):1.通过构造函数、2.通过方法引用(抽象类或接口作为参数)、3.接口注入。


小结3/4/5:开闭原则是目标,要实现这个目标需要依靠里氏原则这个规范(指导思想:父类可以被引用,那么子类必定可以被引用)去执行,执行的手段就是依赖倒置原则(方法是将抽象类或接口作为数据类型,用其具体的子类去实例化进行具体的引用)。

6.合成复用原则:尽量使用对象组合方式实现引用,尽量不要用继承。
        因为继承会破坏闭合原则,将父类的实现细节暴露,如果滥用继承会导致程序冗余、维护复杂,比如A类中引用B类方法B1实现mysql的连接方法,现在需要增加Oracle数据库(C类方法C1)连接;这种情况不要用用A继承B和A继承C,用合成复用的原则,尽量使用对象组合,可以改为B为抽象类,C为B的子类,在A中实例化引用C.C1,即可实现A和C的对象组合。

7.迪米特法则:一个软件实体应当尽可能少地与其他实体发生相互作用。
        应该尽量减少对象之间的交互,如果两个对象之间不必彼此直接通信,那么这两个对象就不应当发生任何直接的相互作用,如果其中的一个对象需要调用另一个对象的某一个方法的话,可以通过第三者转发这个调用。简言之,就是通过引入一个合理的第三者来降低现有对象之间的耦合度。
        迪米特法则还有几种定义形式,包括:不要和“陌生人”说话、只与你的直接朋友通信等,在迪米特法则中,对于一个对象,其朋友包括以下几类:

      (1) 当前对象本身(this);

      (2) 以参数形式传入到当前对象方法中的对象;

      (3) 当前对象的成员对象;

      (4) 如果当前对象的成员对象是一个集合,那么集合中的元素也都是朋友;

      (5) 当前对象所创建的对象。
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值