前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【设计模式 00】六大原则

【设计模式 00】六大原则

作者头像
JuneBao
发布2022-10-26 14:51:22
2270
发布2022-10-26 14:51:22
举报
文章被收录于专栏:JuneBao

单一职责,里氏替换,依赖倒置,接口隔离,迪米特法则,开闭原则

设计模式的六大原则

参考:

1. 单一职责原则

一个类只负责一个明确的功能

优点:

  • 降低类的复杂度,提高代码可读性和可维护性
  • 降低变更时对其他功能的影响

2. 里氏替换原则

原则一:若 o1 是 C1 的一个实例化对象, o2 是 C2 的一个实例化对象,如果在使用 C1 的程序中将o1 替换为 o2 而程序行为没有发生变化,那么 C2 应该是 C1 的子类。

原则二:所有用到基类对象的地方,如果把基类对象替换成子类对象,程序行为不应该发生变化。

实现方法:

  1. 子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法;
  2. 允许子类拓展父类的方法
  3. 当子类的方法重载父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。
  4. 当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。

3. 依赖倒置原则

高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。

比如手机(Phone)依赖CPU,那么 Phone 就是一个高层模块, CPU 就是一的低层模块,Phone 显然不应该依赖一个具体的低层模块(如 Qualcomm865):

代码语言:javascript
复制
public class Phone {
    private Qualcomm cpu;

    Phone(){
        this.cpu = new Qualcomm();
    }

    public void printConfig(){
        System.out.println("cpu is" + this.cpu);
    }
}

不管是高通还是麒麟,都应该抽象为一个CPU类,然后各自实现,高层模块只依赖于抽象的低层模块。

实现方法:

  1. 低层模块尽量都要有抽象类或接口,或者两者都有。
  2. 变量的声明类型尽量是抽象类或接口。
  3. 使用继承时遵循里氏替换原则。

4. 接口隔离原则

客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。 使用多个隔离的接口,比使用单个接口要好.

接口隔离原则

5. 迪米特法则

一个对象应该对其他对象保持最少的了解。

高内聚,低耦合

6. 开闭原则

对拓展开放,对修改封闭:当系统变化时,尽量通过拓展来实现变化,而不是去修改原有代码;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-5-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 设计模式的六大原则
    • 1. 单一职责原则
      • 2. 里氏替换原则
        • 3. 依赖倒置原则
          • 4. 接口隔离原则
            • 5. 迪米特法则
              • 6. 开闭原则
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档