首页 > 其他分享 >简单熟悉下设计模式

简单熟悉下设计模式

时间:2023-02-25 15:55:15浏览次数:28  
标签:对象 创建 适配器 接口 本体 熟悉 简单 模式 设计模式

寻找到底用的什么 设计模式

目录

寻找到底用的什么 设计模式 1

1. 背景 1

1.1. 海超写的es,在枚举里面完成了各个方法的调用.感觉很厉害 看下 1

2. 先熟悉下23中设计模式 1

2.1. 大体上分为三类: 创建型,结构型和行为型 1

2.2. 创建型 1

2.2.1. 1.单例 1

2.2.2. 2.原型模式 1

2.2.3. 3.简单工厂 2

2.2.4. 4.工厂方法 2

2.2.5. 5.抽象工厂 2

2.2.6. 6.建造者 2

2.3. 结构型 2

2.3.1. 代理模式 2

2.3.2. 适配器模式 3

2.3.3. 桥接模式 5

2.3.4. 装饰者模式 6

2.3.5. 外观模式 8

背景

同事写的es,在枚举里面完成了各个方法的调用.感觉很厉害 所以熟悉下设计模式.

注: 此文写于2020年..

先熟悉下23中设计模式

大体上分为三类: 创建型,结构型和行为型

创建型

1.单例

一个类只创建一个实例. 字面意思.

2.原型模式

用类提供的clone方法, 快速复制一个对象出来,速度快,效率高. 用的是内存二进制流.所以快.

3.简单工厂

一个工厂类直接new对象出来.

4.工厂方法

多个工厂类头上都挂个接口出来,生产一个层级的产品(对象); 多态特性具体用哪个工厂.

5.抽象工厂

多个工厂类头上都挂个接口出来,生产多个层级产品(对象);

对于4和5的区别. 奔驰工厂类, suv车型生产接口 , 拼到一块就是 奔驰工厂生产suv车型 . 4就是很单一的生产一种suv车型. 工厂可以是宝马厂,可以是奔驰厂. 5就是可以再生产二厢车车型,拼在一起就是宝马厂可以生产suv,也可以生产二厢车. 其他厂同理 .

6.建造者

创建复杂对象时使用, 一个对象由多个对象组成,其他对象创建完成 ,才能创建目标对象. 有次序.

抽象接口包含各个对象的创建方式. 比如目标对象D, 由A,B,C组成 ,那么抽象接口就包含了A,B,C的创建方法和D的组装方式. 5,6的区别; 抽象工厂一次创建一个对象; 建造者一次创建多个对象,多个对象再次操作完成真正对象创建. 抽象工厂关注的是创建一个对象出来; 建造者关注的是不单单是创建对象,还要完成组件,这才是建造者.

结构型

代理模式

理解

代理对象代理了真实对象 ,本质是为了增强.
将真实对象的方法抽取到接口里面, 代理类实现改接口 , 代理类引入真实对象, 完成真实对象的增强.
这个模式一般也是为了增强真实对象,在原代码逻辑上增加一些代码逻辑.
比如: 我打人, 打人之前要先洗手, 打人后要跑路. 那么我创建代理对象, 先洗手,然后打人,然后跑路.

代码

本体和接口

image

代理类. 注意,代理类内部已经完成了一切

image

客户端调用方式

适配器模式

适配器对象, 真实对象 ,本质是为了统一接口.

不同真实对象调用同一个接口还能输出自己的内容.

玩法: 定义接口,适配器对象实现接口 , 并引入真实对象, 适配器里的实现方法里面放入真实对象的方法.

比如: 光能汽车(真实对象)使用光源驱动(m1), 电能汽车使用电能驱动(m2), 现在要求统一用m方法. 也是创建一个适配器对象. 然后用适配器对象直接调用m方法

代码:

本体和要统一的接口

image

做俩适配器

image

客户端实现

image

注意: 这个有两种实现方式, 一种是类结构组装,一种是接口结构组装 . 上面说的是接口组装. 如果是类组装, 那么需要适配器继承真实对象实现接口 ,也能完成.

桥接模式

理解: 就是嫁接. 本体已经完成了,但是现在可能还要加点. 本体变胖了

定义: 抽象和实现分离 . 用组合替代继承关系. 注意抽象化的就是要加的内容 .实现的就是本体内容

做法: 定义本体接口1 ,定义实现接口类2, 完成前三步的组装,创建完整本体类3,同时要带上扩展的抽象类4, 抽象类继承类5 . 一共5个.

代码

demo: 女士皮包,按用途分可选钱包(Wallet)和挎包(HandBag),按颜色分可选黄色(Yellow)和红色(Red) . 本体是带颜色的,后续我要加上用途.
构建本体
完成扩展.

image

实现调用

image

装饰者模式

要点:本体是真的变身了. 我是我,变身是变身

理解: 本体到真正的变身,有个中间过程 ,这个就认为是抽象装饰类.

定义: 在不改变对象结构的情况下,动态的给该对象增加一些职责

结构:

本体接口,本体类,抽象装饰类(插入本体类),具体装饰类

demo: 本体变身美少女和女妖

本体接口
子主题

image

本体类.
子主题

image

抽象装饰类
子主题

image

美少女具体装饰
子主题

image

女妖具体装饰
客户端调用
子主题

image

对比桥接模式: 装饰者和本地完全不同了. 但是桥接模式, 本体自带了扩展,本体改变.

外观模式

理解: 就跟政务大厅一样,各个部门都在这里.比较简单

定义: 又叫门面模式,为复杂的系统提供一个一致的接口,而使这些子系统更加容易被访问.

做法: 创建外观类,创建子系统.

特点: 注意,是一次全部把子系统调用完.

代码:

外观类
子主题

image

子系统
子主题

image

标签:对象,创建,适配器,接口,本体,熟悉,简单,模式,设计模式
From: https://www.cnblogs.com/do-mybest/p/17154580.html

相关文章

  • 设计模式之装饰器模式
    设计模式之装饰器模式1.解释装饰器模式(DecoratorPattern)也称为包装模式(WrapperPattern)是指在不改变原有对象的基础之上,将功能附加到对象上,提供了比继承更有弹性的......
  • JavaScript最简单的发布/订阅模式
    以下的是在ES6语法上构建的,非常适用于常见的应用场景//消息通知//发布/订阅模式classYLNotificationMessages{constructor(){//事件对象:存放事件的订阅......
  • 设计模式之适配器模式
    简介当我们需要使用某个对象的功能,但是我们没有这个对象时,我们可以用适配器和替换对象来实现这个功能.比如我们手机有typec接口,但是我们没有这个接口的耳机,我们可以......
  • “简单的编程方面的喧嚣”是一个谎言
    点击诱饵趋势让我发疯。一些作者承诺容易赚钱。他们说兼职经营企业是一项简单的任务。你是一名程序员,所以你应该能够自动化你的业务,对吧?不要买垃圾。快速致富的计划一直......
  • 设计模式之代理模式
    简介在某些场景下,我们需要增强某个对象的使用,比如我们在执行某个方法前加输出一条日志,但是我们不能直接改这个类,我们可以用代理对象来实现这个功能模式应用Spri......
  • 设计模式(十五)-面向对象概念
    一、设计原则1、单一职责:设计目的单一的类。2、开放-封闭原则:对扩展开放,对修改关闭。3、里氏替换原则:子类可代替父类。4、依赖倒置:要依赖与接口,而不是具体实现,针对接口编程......
  • 1_log4j1和log4j2的简单配置
     项目中添加依赖log4j2<dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.12.1</version></dependenc......
  • 1_log4j1和log4j2的简单配置
     项目中添加依赖log4j2<dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.12.1</version></dependenc......
  • 1_log4j1和log4j2的简单配置
    ​ 项目中添加依赖log4j2<dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.12.1</version>......
  • 学习中设计模式的总结
    首先要了解什么是设计模式呢?设计模式:可以简单的理解为两个字“经验”,就是码农们在各种需求中间,总结出来的一种最优的解法称之为设计模式;1,单例模式......