美文网首页设计模式
23天学完设计模式

23天学完设计模式

作者: Yinvoker | 来源:发表于2019-05-10 00:13 被阅读60次

前言

众所周知,软件设计模式一共有23种,从今天开始,每天一种设计模式,关键理解,重在实践。

每种设计模式会结合uml图及源码去进行研究学习,以达到熟练掌握的目标。

设计原则

在学习设计模式前先了解一下软件设计的一些基本原则,因为所有的模式都是为了匹配这些开发原则而设计的。

1. 单一职责原则(Single Responsibility Principle)

一个类只有一个引起它变化的原因,也就是只有一个职责。每一个职责都是变化的一个轴线,如果一个类有一个以上的职责,这些职责就耦合在了一起。当一个职责发生变化时,可能会影响其它的职责,这样的软件结构是我们不提倡的。另外,多个职责耦合在一起,会严重影响代码的复用性。

2. 开闭原则(Open-Close Principle)

开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类。

3. 里氏代换原则(Liskov Substitution Principle)

里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。 LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。里氏代换原则是对“开-闭”原则的补充。实现“开-闭”原则的关键步骤就是抽象化。而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。

4. 依赖倒转原则(Dependence Inversion Principle)

所谓依赖倒置原则(Dependence Inversion Principle)就是要依赖于抽象,不要依赖于具体。简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合。

实现开闭原则的关键是抽象化,并且从抽象化导出具体化实现,如果说开闭原则是面向对象设计的目标的话,那么依赖倒转原则就是面向对象设计的主要手段。

5. 接口隔离原则(Interface Segregation Principle)

这个原则的意思是:使用多个隔离的接口,比使用单个接口要好。还是一个降低类之间的耦合度的意思,从这儿我们看出,其实设计模式就是一个软件的设计思想,从大型软件架构出发,为了升级和维护方便。

6. 合成复用原则(Composite Reuse Principle)

合成复用原则就是指在一个新的对象里通过关联关系(包括组合关系和聚合关系)来使用一些已有的对象,使之成为新对象的一部分;新对象通过委派调用已有对象的方法达到复用其已有功能的目的。简言之:要尽量使用组合/聚合关系,少用继承。

7. 迪米特法则(Demeter Principle)

为什么叫最少知道原则,就是说:一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。也就是说一个软件实体应当尽可能少的与其他实体发生相互作用。这样,当一个模块修改时,就会尽量少的影响其他的模块,扩展会相对容易,这是对软件实体之间通信的限制,它要求限制软件实体之间通信的宽度和深度。

在了解了这几类设计原则之后,会对我们之后学习设计模式起到如虎添翼的效果,可能有些原则这时还没看懂,不过没关系,我们会在之后的学习中更加了解设计原则的含义。

设计模式

设计模式共有23个,可分为三大类:创建模式(5种),结构模式(7种),行为模式(11种),我们一个一个来学习。

我把所有的源码都放在了我的github上,有需要的同学自取,如果觉得还不错的话请star一下该项目 :)

创建模式

  • 抽象工厂模式 (Abstract Factory)

  • 建造者模式 (Builder)

  • 工厂方法模式 (Factory Method)

  • 原型模式 (Prototype)

  • 单例模式 (Singleton)

结构模式

  • 适配器模式 (Adapter)

  • 桥接模式 (Bridge)

  • 组合模式 (Composite)

  • 修饰模式 (Decorator)

  • 外观模式 (Facade)

  • 享元模式 (Flyweight)

  • 代理模式(Proxy)

行为模式

  • 责任链模式 (Chain of Responsibility)

  • 命令模式 (Command)

  • 解释器模式 (Interpreter)

  • 迭代器模式 (Iterator)

  • 中介者模式 (Mediator)

  • 备忘录模式 (Memento)

  • 观察者模式(Observer)

  • 状态模式 (State)

  • 策略模式 (Strategy)

  • 模板方法模式(Template Method)

  • 访问者模式 (Visitor)

相关文章

  • 10月日记回顾20201228

    总结:10月份开始区分学完和学会,在制定学习目标时也开始以学完为终点,按照这个思路学完《设计模式》。也同时知道学完...

  • 23天学完设计模式

    前言 众所周知,软件设计模式一共有23种,从今天开始,每天一种设计模式,关键理解,重在实践。 每种设计模式会结合u...

  • 学完《设计模式》之后20201028

    上一周学完了《设计模式》,然后开始回忆从《设计模式》中都学到了什么。 结果发现什么也想不起来,唯一记得的是有23种...

  • 9月日记回顾20201227

    总结:9月学完设计模式,知道设计模式并不是为了代码好看,而是为了能够让我们更好的应对变化。也开始放过自己,选择接受...

  • 为什么一定要学习设计模式

    先来看一个生活案例,当我们开心时,也许会寻求享乐。在学习设计模式之前,你可能会这样感叹: 学完设计模式之后,你可能...

  • 设计模式开篇

    目录 为什么要写设计模式系列 学设计模式之前,必学 UML 设计模式概览 创建型模式(Creational Pat...

  • 23种设计模式学习总结-第一遍

    如何学? 置顶:轮子哥指导如何学习“设计模式” 什么是设计模式? 设计模式推荐书籍w3c设计模式详解23中设计模式全解析

  • 这才是责任链模式的优雅使用方式

    本文节选自《设计模式就该这样学》 1使用责任链模式设计热插拔权限控制 本文节选自《设计模式就该这样学》作者 谭勇德...

  • 手撸golang 结构型设计模式 门面模式

    手撸golang 结构型设计模式 门面模式 缘起 最近复习设计模式拜读谭勇德的<<设计模式就该这样学>>本系列笔...

  • 手撸golang 结构型设计模式 组合模式

    手撸golang 结构型设计模式 组合模式 缘起 最近复习设计模式拜读谭勇德的<<设计模式就该这样学>>本系列笔记...

网友评论

    本文标题:23天学完设计模式

    本文链接:https://www.haomeiwen.com/subject/wlbnoqtx.html