设计模式
设计模式学习记录
编程芝士
字节跳动后端工程师,测控专业转程序员,努力努力,为了家人和蝈蝈!
展开
-
【设计模式】策略模式
文章目录策略模式模式动机定义类图实现分析优点缺点使用环境 策略模式 模式动机 完成一项任务,往往可以有多种不同的方式,每一种方式称为一个策略,我们可以根据环境或者条件的不同选择不同的策略来完成该项任务。 在软件系统中,有许多算法可以实现某一功能,如查找、排序等,一种常用的方法是硬编码(Hard Coding)在一个类中,如需要提供多种查找算法,可以将这些算法写到一个类中,在该类中提供多个方法,每一个方法对应一个具体的查找算法;当然也可以将这些查找算法封装在一个统一的方法中,通过if…else…等条件判断语原创 2020-08-01 08:57:02 · 395 阅读 · 0 评论 -
【设计模式】 观察者模式
文章目录观察者模式模式动机定义类图例子分析优点缺点实际应用适用场景 定义对象之间的一对多依赖,当一个对象状态改变时,它的所有依赖都会收到通知并且自动更新状态。 观察者模式 模式动机 建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应做出反应。在此,发生改变的对象称为观察目标,而被通知的对象称为观察者,一个观察目标可以对应多个观察者,而且这些观察者之间没有相互联系,可以根据需要增加和删除观察者,使得系统更易于扩展,这就是观察者模式的模式动机。 定义 定义对象之间的一对多依赖原创 2020-08-01 08:56:26 · 495 阅读 · 0 评论 -
【设计模式】模板方法模式
文章目录模板方法模式定义类图实现 模板方法模式 定义 只定义算法框架,而将一些步骤的实现延迟到子类。 通过模板方法,子类可以重新定义算法的某些步骤,而不用改变算法的结构。 类图 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gl1rhSCA-1596243318723)(https://camo.githubusercontent.com/b71fede146c0f8d211d29799abb9f94259c0ad7c/68747470733a2f2f63732d6e6f74原创 2020-08-01 08:55:26 · 416 阅读 · 0 评论 -
【设计模式】适配器模式
文章目录适配器模式定义类图Implementation优点缺点适用环境模式应用 适配器模式 火鸡冒充鸭子叫。 定义 把一个类接口转换成另一个用户需要的接口,适配器模式使接口不兼容的那些类可以一起工作。 类图 适配器模式有对象适配器和类适配器两种实现: 对象适配器: 类适配器: Implementation 鸭子(Duck)和火鸡(Turkey)拥有不同的叫声,Duck 的叫声调用 quack() 方法,而 Turkey 调用 gobble() 方法。 要求将 Turkey 的 gobble() 方法适原创 2020-08-01 08:54:50 · 309 阅读 · 0 评论 -
【设计模式】桥接模式
文章目录桥接模式引入定义类图举例优点缺点模式应用使用环境模式扩展模式扩展总结 桥接模式 引入 设想如果要绘制矩形、圆形、椭圆、正方形,我们至少需要4个形状类,但是如果绘制的图形需要具有不同的颜色,如红色、绿色、蓝色等,此时至少有如下两种设计方案: 第一种设计方案是为每一种形状都提供一套各种颜色的版本。 第二种设计方案是根据实际需要对形状和颜色进行组合 对于有两个变化维度(即两个变化的原因)的系统,采用方案二来进行设计系统中类的个数更少,且系统扩展更为方便。设计方案二即是桥接模式的应用。桥接模式将继承关系原创 2020-08-01 08:54:07 · 410 阅读 · 0 评论 -
【设计模式】装饰模式
文章目录装饰模式模式动机定义类图例子优点缺点适用场景 装饰模式 模式动机 一般有两种方式可以实现给一个类或对象增加行为: 继承机制,使用继承机制是给现有类添加功能的一种有效途径,通过继承一个现有类可以使得子类在拥有自身方法的同时还拥有父类的方法。但是这种方法是静态的,用户不能控制增加行为的方式和时机。 关联机制,即将一个类的对象嵌入另一个对象中,作为这个类的一个属性,由另一个对象来决定是否调用嵌入对象的行为以便扩展自己的行为,我们称这个嵌入的对象为装饰器(Decorator) 装饰模式以对客户透明的方式原创 2020-08-01 08:52:42 · 261 阅读 · 0 评论 -
【设计模式】工厂模式
文章目录1. 简单工厂模式定义类图案例简单工厂模式的优点简单工厂模式的缺点适用环境例子2. 工厂方法模式定义类图举例实际应用工厂方法模式的优点工厂方法模式的缺点适用场景3. 抽象工厂模式定义类图Implementation优点缺点适用环境模式应用 1. 简单工厂模式 定义 在创建一个对象时不向客户暴露内部细节,并提供一个创建对象的通用接口。 类图 简单工厂把实例化的操作单独放到一个类中,这个类就成为简单工厂类,让简单工厂类来决定应该用哪个具体子类来实例化。 这样做能把客户类和具体子类的实现解耦,客户类不再需原创 2020-08-01 08:52:07 · 336 阅读 · 0 评论 -
【设计模式】单例模式
文章目录1. 单例模式概念要求实现方式饿汉式1. 使用静态常量实现2. 使用静态代码块实现懒汉式双重检查(较推荐)静态内部类模式(推荐)枚举(推荐)使用场景列举单例模式的应用单例模式的优点单例模式的缺点 1. 单例模式 概念 单例模式就是为了确保一个类当中只有一个实例,并且提供一个全局的公有访问点。 通俗的说,当我们需要用到某个对象的实例的时候,我们无需进行其它多余操作,而是直接通过某个接口获取到它的实例,并且这个实例在整个系统中保证唯一。 要求 这就需要我们满足两点要求: 生成的类的实例是唯一的,也就是原创 2020-08-01 08:50:16 · 425 阅读 · 0 评论 -
【设计模式】代理模式
概念: 为一个对象提供一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。 实现方式:静态代理和动态代理。静态代理有一个类文件描述代理模式;动态代理在内存中形成代理类。 ...原创 2020-04-24 21:09:19 · 153 阅读 · 1 评论 -
【设计模式】 六大原则
设计模式的六大原则分别是: 单一职责原则 接口隔离原则 依赖倒转原则 里氏替换原则 开闭原则 ocp 迪米特原则 单一职责原则 对类来说的,一个类只负责一个职责,如果一个类负责两个不同的任务,当其中的一个任务发生改变需要修改的时候,另外一个任务可能会受影响。 单一职责原则的优点: 1) 降低类的复杂度,一个类只负责一项职责。 2) 提高类的可读性,可维护性 3) 降低变更引起...原创 2020-02-07 21:45:31 · 224 阅读 · 0 评论