【一分钟入门】设计模式

【一分钟入门】设计模式

【前言】

本文是本人学习设计模式时记录的笔记,涉及的内容已经简化过,更加注重的是本质的把控,没有编程基础的同学谨慎参考。

【设计模式】目的

我们为什么要使用设计模式呢,或者说设计模式有什么好处呢?希望下面的回答会帮到你

1.代码重用性(合适的设计模式可以避免相同功能重复编码的情况)
2.可读性(设计编码规范,便于他人理解与日后维护)
3.可扩展性(方便添加新的功能)
4.使得程序高内聚低耦合

【设计模式】7大原则

以后讲的23种设计模式都是基于以下7个原则设计的

1.单一原则
2.接口隔离原则
3.依赖倒转原则(亦称:依赖导置原则)
4.里氏替换原则
5.开闭原则
6.迪米特法则
7.合成复用原则

这些原则的核心思想有3点

1.独立应用中需要变化之处
2.面向接口编程,而不是面向实现编程
3.为了交互对象之间的松耦合设计而努力

【7大原则】单一原则

【解析】顾名思义,一个类只负责一个职责
【目的】
    1.降低类的复杂度,让每个类都各司其职
    2.降低后续变更引起的风险
    3,提高类的可读性,可维护性
【能否违反】可以违反

【7大原则】接口隔离原则

【解析】一个类对另一个类的依赖应该建立在最小的接口上
【依赖】在类中用到对方即为依赖
【举例】看下图1
Class A通过Interface1会依赖使用Class B但是A只会使用到接口中的1,2,3这三个方法
Class C通过Interface1会依赖使用Class D但是C只会使用到接口中的1,4,5这三个方法
这样就不是一个类对另一个类的依赖应该建立在最小的接口上了,也就是违反了【接口隔离】

图1

那么如果是符合接口隔离原则应该是如何分配接口呢?
看下图2,简单来说就是将使用的接口拆开,使得一个类对另一个类的依赖应该建立在最小的接口上

图2

【7大原则】依赖倒转原则

【解析】一句话概括:面向接口编程(Object-Oriented Design, OOD)
【PS】
1.底层接口尽量有抽象类或接口
2.变量,声明类型尽量是抽象类或是接口
3.继承时需要遵循里氏替换原则
4.传递方式:接口传递;构造方法传递;setter方法传递

【7大原则】里氏替换原则

【解析】引用基类的地方必须可以透明地使用其子类对象——翻译成人话就是:子类可以扩展父类的功能,但不能改变父类原有的功能。
【作用】
    1.里氏替换原则是实现开闭原则的重要方式之一。
    2.它克服了继承中重写父类造成的可复用性变差的缺点。
    3.它是动作正确性的保证。即类的扩展不会给已有的系统引入新的错误,降低了代码出错的可能性
【实现】
里氏替换要求:子类尽量不要重写父类的方法,尽量使用利用聚合,组合,依赖解决

【7大原则】OCP原则(开闭原则)

【解析】对扩展开放(可以添加类、方法),对修改关闭(不改变原代码,不改变原功能)
【PS】
    1.开闭原则是整个设计模式的核心,其他原则以及使用设计模式的目的其实都是为了实现开闭原则
    2.开闭原则要求我们用抽象构建框架用实现扩展细节

【7大原则】迪米特法则(最少知道原则)

【解析】对自己依赖的类知道的越少越好
【核心】降低类之间的耦合
【实现】只与直接朋友通讯
【直接朋友】
    两个类之间有耦合关系就是直接朋友
    耦合关系包括:依赖,关联,组合,聚合
    具体表现为:一个类作为另一个类的成员变量,方法参数,方法返回值

【7大原则】合成复用原则

【解析】尽量使用合成聚合的方式而不是继承

【设计模式】总结

设计模式一共有7大原则,23种具体的设计模式。而这所有基本上就是为了一个原则服务——OCP原则。
设计模式的核心思想或者说最初设计的目的——其实就是为了交互对象之间的松耦合设计而努力
设计模式向我们传递的更多是编程思想,而不是一成不变的模板
如果你觉得本文在某个时刻带给了你一些新的体会
我将不胜荣幸,无以所求,只求点个赞发个评论~
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值