设计模式六大原则 - SOLID

SOLID设计模式的六大原则分别是:

  1. Single Responsibility Principle (SRP): 单一职责原则
  2. Open Closed Principle (OCP):             开闭原则
  3. Liskov Substitution Principle (LSP):     里氏替换原则
  4. Law of Demeter (LOD) :                         迪米特法则
  5. Interface Segregation Principle (ISP): 接口隔离原则
  6. Dependence Inversion Principle (DIP):依赖倒置原则

【里氏替换原则】

里氏替换原则的原话为:

The derived class must be usable through the base class interface, without the need for the user to know the difference.

里氏替换原则的核心思想是:

一个父类对象在其出现的任何地方,都可以用其子类对象做替换,并且不会导致程序错误。

通俗的来讲就是:子类可以扩展父类的功能,但不能改变父类原有的功能。它包含以下含义:

    1) 子类可以实现父类的抽象方法/虚函数,但不能重定义父类的非抽象方法/非虚函数。
    2) 子类中可以增加自己特有的方法。
    3) 当子类覆盖父类的方法时,方法的前置条件(形参)要比父类方法的输入参数更宽松,方法的后置条件(即返回值)要比父类更严格。

里氏替换原则有个典型的例子是正方形继承自长方形的问题,当正方形覆盖长方形的setLength()和setWidth()方法时,会导致程序错误,关于这个例子,可以参考:

里氏替换原则_实践求真知-CSDN博客

【迪米特法则】

迪米特法则(Law of Demeter)又叫作最少知识原则(Least Knowledge Principle 简写LKP),就是说一个对象应当对其他对象有尽可能少的了解,不和陌生人说话。英文简写为: LoD.

英文原话:

Each unit should have only limited knowledge about other units: only units “closely” related to the current unit.

门面模式(Facade)和中介者模式(Mediator)是迪米特法则的具体应用。

迪米特法则主要是降低类或者说模块之间的耦合性,下面这篇文章描述的很形象:

设计模式-----最少知识原则_淮城一只猫-CSDN博客

"

最少知识原则在面向对象编程中的应用

对于对象 O 中的一个方法 m ,m 方法仅能访问如下这些类型的对象:

  1. O 对象自身;
  2. m 方法的参数对象;
  3. 任何在 m 方法内创建的对象;
  4. O 对象直接依赖的对象;

具体点儿就是,对象应尽可能地避免调用由另一个方法返回的对象的方法。

现代面向对象程序设计语言通常使用 “.” 作为访问标识,LoD 可以被简化为 “仅使用一个点(use only one dot)”。也就是说,代码 a.b.Method() 违反了 LoD,而 a.Method() 则符合 LoD。打个比方,人可以命令一条狗行走,但是不应该直接指挥狗的腿行走,应该由狗去指挥它的腿行走。

"

【依赖倒置原则】

依赖倒置原则的本质是避免具体类之间的直接调用,而是通过抽象类/接口的方式进行调用,下面这篇文章讲解的通俗易懂:

设计模式六大原则例子(四)-- 依赖倒置原则(DIP)例子_yabay2208的博客-CSDN博客_依赖倒置原则例子

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值