设计模式
文章平均质量分 91
搬运Gong
千里之行,始于足下!
展开
-
设计模式十四(责任链模式)
责任链模式定义责任链模式,是将链中的每一个节点看做是一个对象,每个节点处理的请求均相同,且内部自动维护下一个节点对象。当一个请求,从链式的首端发出时,会沿着链的路径依次传递给每一个节点对象,直至有对象处理这个请求为止。属于行为模式。责任链在生活中的应用场景在日常生活中,责任链模式还是比较常见的,我们平时工作处理一些事务,往往是各个部门协作完成某一个任务。而每个部门都有各自的职责,因此,很多时候事情完成一半,便会转交给下一个部门,直到所有部门都过一遍之后事情才能完成(工作中的各种审批流程等)。责任链原创 2021-05-23 17:07:52 · 358 阅读 · 2 评论 -
设计模式十三(策略模式)
策略模式原创 2021-05-11 11:31:10 · 115 阅读 · 0 评论 -
设计模式十二(模板方法模式)
模板方法模式定义模板方法模式(Template Method Pattern)是指定义一个操作中的算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤,属于行为型设计模式。模板方法模式实际上是封装了一个固定流程,该流程由几个步骤组成,具体步骤可以由子类进行不同实现,从而让固定的流程产生不同的结果。它非常简单,其实就是类的继承机制,但它却是一个应用非常广泛的模式。模板方法模式的本质是抽象封装流程,具体进行实现。应用场景在我们日常生活中,模板方法模式也很原创 2021-04-16 13:31:48 · 132 阅读 · 0 评论 -
设计模式十一(委派模式)
委派模式定义委派模式又叫委托模式,是面向对象的一种设计模式,允许对象组合实现与继承相同的代码重用。它的基本作用就是负责任务的调用和分配任务,是一种特殊的静态代理,可以理解为全权代理,但是代理模式注重过程,而委派模式注重结果。委派模式属于行为型模式,不属于 GOF 23种设计模式中。委派模式的应用场景例如:Boss给 Leader 下发任务,Leader 会根据实际情况给每个员工派发任务,待员工把工作任务完成之后,再由Leader汇报进度和结果给 Boss.我们用代码来实现一下这个业务场景:创建原创 2021-04-10 16:31:17 · 150 阅读 · 0 评论 -
设计模式十(桥接模式)
桥接模式定义桥接模式(Bridge Pattern)也称为桥梁模式、接(Interfce)模式或柄体( Handle and Body )模式,是将抽象部分与它的具体实现部分分离,使它们都可以独立地变化,属于结构型模式。桥接模式主要目的是通过组合的方式建立两个类之间的联系,而不是继承。但又类似于多重继承方案,但是多重继承方案往往违背了类得单一职责原则,其复用性比较差,桥接模式是比多重继承更好的替代方案。桥接模式的核心在于解耦抽象和实现。桥接模式的应用场景上一篇:适配器模式...原创 2021-03-29 10:04:51 · 142 阅读 · 0 评论 -
设计模式九(适配器模式)
适配器模式定义适配器模式(Adapter Pattern)又叫做变压器模式,它的功能是将一个类的接口变成客户端所期望的另一种接口,从而使原本因接口不匹配而导致无法在一起工作的两个类能够一起工作,属于结构型设计模式。也就是说,当前系统存在两种接口A和 B,客户只支持访问A接口,但里当前系统没有A接口对象,但是有 B接口对象,但客户无法识别 B接口,因此需要通过一个适配器C,将 B接口内容转换成A接口,从而使得客户能够从A接口获取得到B接口内容。在软件开发中,基本上任何问题都可以通过增加一个中间层进行解原创 2021-03-16 08:37:28 · 201 阅读 · 0 评论 -
设计模式八(享元模式)
享元模式面向对象技术可以很好地解决一些灵活性或可扩展性问题,但在很多情况下需要在系统中增加类和对象的个数。当对象数量太多时,将导致运行代价过高,带来性能下降等问题。享元模式正是为解决这一类问题而诞生的。定义享元模式(Flyweight Pattern)又称为轻量级模式,是对象池的一种实现。类似于线程池,线程池可以避免不停的创建和销毁对象,消耗性能。提供了减少对象数量从而改善应用所需的对象结构的方式。其宗旨是共享细粒度对象,将多个对同一对象的访问集中起来,不必为每个访问者创建一个单独的对象。以此来降低对原创 2021-03-14 13:16:16 · 356 阅读 · 0 评论 -
设计模式七(装饰器模式)
装饰器模式上一篇:门面模式原创 2021-03-12 13:52:46 · 124 阅读 · 0 评论 -
设计模式六(门面模式)
门面模式门面模式(Facade Pattern)又叫外观模式,提供了一个统一接口,用来访问子系统中的一群接口。其主要特征是定义了一个高层接口,让子系统更容易使用,属于结构型模式。其实,在我们日常的编码工作中,我们都在有意无意的大量使用门面模式,但凡只要高层模块需要调度多个子系统(2 个以上类对象),我们都会自觉的创建一个新类封装这些子系统,提供精简接口,让高层模块可以更加容易间接调用这些子系统的功能。尤其是现阶段各种第三方 SDK,各种开源类库,很大概率都会使用门面模式。尤其是你觉得调用越方便的,门面模原创 2021-03-07 15:10:36 · 101 阅读 · 1 评论 -
设计模式五(代理模式-下篇)
上一篇学习了静态代理与动态代理的实现及业务场景应用,对代理模式有了初步认识,本篇将从源码的角度对代理模式进行深度剖析,加深对动态代理的理解,做到知其然,知其所以然。手写 JDK 动态代理实现原理既然知道了动态代理的强大,那么我们来研究一下原理,看看它是如何实现的?并模仿 JDK动态代理手写一个属于自己的动态代理。我们都知道JDK 动态代理采用字节重组,重新生成对象来替代原始对象,以达到动态代理的目的。JDK 动态代理生成对象的步骤如下:获取被代理对象的引用,并且获取它的所有接口,反射获取;JDK原创 2021-03-06 16:52:37 · 97 阅读 · 0 评论 -
设计模式五(代理模式-上篇)
代理模式代理模式(Proxy Pattern)是指为其他对象提供一种代理,以控制对这个对象的访问,属于结构型模式。在某些情况下,一个对象不适合或不能直接引用另外一个对象,而代理对象可以在客户端和目标对象之间起到中介作用。在代码中,一般代理会被理解为代码增强,实际上就是在原代码逻辑前后增加一些代码逻辑,而是调用者无感知。代理模式分为静态代理和动态代理。代理模式的应用场景生活中的租房中介、售票黄牛、婚介、经纪人、快递、事务代理、非入侵式日志监听等,都是代理模式的具体的实际体现。当无法或不想直接引用某个对原创 2021-03-04 09:27:39 · 118 阅读 · 0 评论 -
设计模式四(建造者模式)
定义建造者模式(Build Pattern)是将一个复杂对象的创建过程与它的表示分离,使得同样的构建过程可以创建不同的的表示,属于创建型模式。使用建造者模式对于用户而言只需要指定建造的类型就可以获得对象,建造过程及细节不需要了解。应用场景建造者模式适用于创建对象需要很多步骤,但是步骤的顺序不一定固定。如果一个对象有非常复杂的内部结构(很多属性),可以将复杂对象的创建和使用进行分离;建造者适用于一个具有较多的零件的复杂产品的创建过程,由于需求的变化,组成这个复杂产品的各个零件经常猛烈变化,但是他们的原创 2021-03-02 14:36:14 · 149 阅读 · 0 评论 -
设计模式三(原型模式)
原型模式原型模式(Prototype Pattern)是指原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象,属于创建型模式。原型模式的核心在于拷贝原型对象,以系统中已存在的一个对象为原型,直接基于内存二进制流进行拷贝,无须再经历耗时的对象创建过程(不调用构造函数),性能提升许多。当对象的创建过程比较耗时,可以利用当前系统中已存在的对象作为原型,对其进行克隆(一般是基于二进制流的复制),躲避初始化过程,使得新对象的创建时间大大减少。...原创 2021-03-01 15:41:29 · 170 阅读 · 0 评论 -
设计模式二(单例模式)
单例模式单例模式定义及应用场景单例模式(Singleton Pattern)是指确定一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点。单例模式是创建型模式。J2EE标准中的ServletContext、ServletContextConfig等、Spring 框架中应用的 ApplicationContext、数据库的连接池等也是单例形式。饿汉式单例饿汉式单例在类加载的时候就就 立刻初始化,并且创建单例对象。它线程绝对安全,在线程还没有出现以前就完成了实例化,不可能存在访问安全问题。饿汉原创 2021-02-28 15:04:51 · 192 阅读 · 3 评论 -
设计模式一(工厂模式)
不用设计模式并非不可以,但是用好设计模式能帮助我们更好的解决实际问题,设计模式最重要的是解耦。设计模式天天都在用,但自己确无从感知。最近系统的学习了设计模式,特做此笔记进行记录,也分享给有需要的小伙伴!经典框架都在用设计模式解决问题...原创 2021-02-26 09:53:30 · 112 阅读 · 2 评论