![](https://img-blog.csdnimg.cn/20190918140129601.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
新设计模式
文章平均质量分 86
设计模式
张井天
知其然,知其所以然!
展开
-
行为型模式(四)职责链链模式
一、击鼓传花击鼓传花是一种热闹而又紧张的饮酒游戏。在酒宴上宾客一次坐定位置,由一人击鼓,击鼓的地方与传花的地方是分开的,以示公正。开始击鼓时,花束就开始依次传递,鼓声一落,如果花束在某人手中,则该人就得饮酒。比如说,贾母、贾赦、贾政、贾宝玉和贾环是五个参加击鼓传花游戏的传花者,他们组成一个环链。击鼓者将花传给贾母,开始传花游戏。花由贾母传给贾赦,贾赦传给贾政,贾政传给贾宝玉,贾宝玉传给贾环,贾环再传给贾母,由此往复,如下图所示。击鼓传花便是一种典型的责任链模式。二、什么是责任链模式责任链模式是一转载 2022-03-02 14:50:49 · 242 阅读 · 0 评论 -
结构型模式(五)门面模式(Facade Pattern 外观模式)
一、模式定义门面模式(Facade Pattern):外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。门面模式又称为外观模式,它是一种对象结构型模式。二、模式动机现代的软件系统都非常复杂,尽管我们已经想尽一切方法将其“分而治之”,把一个系统划分为好几个较小的子系统了,但是仍然可能会存在这样的问题:子系统内有非常多的类,客户端往往需要和许多对象打交道之后 才能完成想要完成的功能。在我们的生活中转载 2022-02-24 12:16:45 · 5656 阅读 · 1 评论 -
设计模式-装饰者模式
装饰模式:装饰模式的定义: 再不改变原有对象的基础上,将功能附加到对象上, 动态的给一个对象添加一些额外的职责UML结构图如下:Component 是抽象构件,定义一个对象接口,可以给这些对象动态的添加职责;ConcreteComponent定义一个具体对象,实现 Component;Decorator : 是装饰抽象类,实现接口, 作为所有装饰类的父类。ConcreteDecorator: 是Decorator子类,具体装饰对象;场景:我们以汽车为例, 定义接口Car:【对应:Comp原创 2021-09-11 00:01:00 · 161 阅读 · 0 评论 -
创建型模式(五)-建造者模式(Builder pattern)
前言:人在IT江湖飘,不懂设计模式咋装逼?但是没写过5万行代码谈设计模式都是在瞎扯淡,咱先看看定义In software engineering, a software design pattern is a general, reusable solution to a commonly occurring problem within a given context in software design. It is not a finished design that can be tra转载 2021-06-01 22:55:07 · 301 阅读 · 2 评论 -
创建型设计模式(一)-单例模式简述及优化
一、前言:单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证并发环境下中,应用该模式的一个类只有一个实例。即一个类只有一个对象实例。常见的单例模式:饿汉模式: 在程序启动时即创建对象实例。懒汉模式:仅当程序中使用到改对象时,才回去创建对象。二、单例模式实例:1. 饿汉模式,程序启动,对象实例被创建 【不推荐】:/** * @...原创 2019-11-30 15:05:42 · 542 阅读 · 0 评论 -
Java代理模式-静态代理(1)
代理模式在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。代理模式分为静态代理、动态代理,本篇博文 主要讲解静态代理静态代理静态代理:由程序员创建或特定工具自动生成源代码,也就是在编译时就已经将接口,被代理类,代理类等确定下来。在程序运行之前,代理类的.class...原创 2019-05-26 20:48:29 · 372 阅读 · 0 评论 -
Java动态代理-JDK实现(2)
Java1.8动态代理:代理类在程序运行时被创建的代理方式被称为动态代理,在静态代理中,代理类是开发者自己完成的,而动态代理是在程序运行之前就已经完成,相比于静态代理,动态代理的优势可以很方便的对代理类的函数进行统一处理,开发者可以将更大的精力集中于业务逻辑的实现其中动态代理分为两种:JDK 动态代理 和CGLIB动态代理, 本文主要讲述 JDK代理,CGLIB代码下一篇会讲到简单实现:...原创 2019-05-27 15:52:00 · 1026 阅读 · 0 评论 -
Java动态代理-CGLIB(3)
CGLIB 动态代理:JDK 动态代理,JDK 动态代理的类必须实现一个接口,而且生成的代理类是其接口的实现类,也就是被代理的类的兄弟类,由JDK内部实现,cglib代理的类,无需强制实现接口,其生成的代理类 是 被代理类的子类,并且重写的被代理类的方法,而且需要额外的引入Jar简单实现:计算一个 sql 调用总时间代码逻辑:引入Maven 配置:<dependen...原创 2019-05-28 20:53:43 · 8170 阅读 · 0 评论