设计模式心法

设计模式

设计模式是指在软件开发中,经过验证的,用于解决在特定环境下,重复出现的,特定问题的解决方
案;

内存模型:

在这里插入图片描述在这里插入图片描述在这里插入图片描述扩展:c语言当中的多态
redis
nginx

模式设计原则:

  • 依赖倒置原则

    • 高层模块不应该依赖低层模块,二者都应该依赖抽象;
    • 抽象不应该依赖具体实现,具体实现应该依赖于抽象;
      在这里插入图片描述 自动驾驶系统公司是高层,汽⻋生产厂商为低层,它们不应该互相依赖,一方变动另一方也会
      跟着变动;而应该抽象一个自动驾驶行业标准,高层和低层都依赖它;这样以来就解耦了两方
      的变动;自动驾驶系统、汽⻋生产厂商都是具体实现,它们应该都依赖自动驾驶行业标准(抽
      象);
  • 开放封闭原则

    • 一个类应该对扩展开放,对修改关闭;
  • 面向接口编程

    • 不将变量类型声明为某个特定的具体类,而是声明为某个接口。
    • 客户程序无需获知对象的具体类型,只需要知道对象所具有的接口。
    • 减少系统中各部分的依赖关系,从而实现“高内聚、松耦合”的类型设计方案。
  • 封装变化点

    • 将稳定点和变化点分离,扩展修改变化点;让稳定点与变化点的实现层次分离;
  • 单一职责原则

    • 一个类应该仅有一个引起它变化的原因;
  • 里氏替换原则

    • 子类型必须能够替换掉它的父类型;主要出现在子类覆盖父类实现,原来使用父类型的程序可
      能出现错误;覆盖了父类方法却没实现父类方法的职责;
  • 接口隔离原则

    • 不应该强迫客户依赖于他们不用的方法;
  • 对象组合优于类继承

    • 继承耦合度高,组合耦合度低;

什么情况下使用设计模式?

  • 系统的关键依赖点;
  • 能明确找到变化点;
  • 能明确找到复用方向;
  • 对需求变化方向熟悉;

如何找到设计模式?

  • 从重构中获得;

重构

  • 静态转变为动态;
  • 早绑定转变为晚绑定;
  • 继承转变为组合;
  • 编译时依赖转变为运行时依赖;
  • 紧耦合转变为松耦合;

为什么要学习设计模式?

  • 从已有的且证明有效的设计模式中获取灵感,少走弯路;
  • 通用语言,知道在已有的设计模式扩展代码;
  • 体会模式设计,设计自己的行之有效的设计模式;

学习设计模式的步骤

  • 深刻体会上面的原则;
  • 理解设计模式,能知道设计模式的变化点和稳定点;
  • 能在已使用的设计模式中,知道如何写扩展;
  • 能在复杂需求中,抽象出已有设计模式;
  • 能在重构中,开发自己的设计模式;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我也要当昏君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值