![](https://img-blog.csdnimg.cn/20201218191711874.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
大话设计模式之爱你一万年
文章平均质量分 69
本课程系统地讲解了23种设计模式,并且根据具体的实例形象化、具体化地进行了一步步代码的编写和详细讲解,让对本来不太了解、一知半解、只有概念的同学,彻底地了解和掌握常用的设计模式使用场景及使用方式,并掌握每个设计模式的UML结构和描绘方式。让你从设计模式小白直接进入到模式大神!
悟纤
过着爱谁谁的生活,活出不设限的人生!
展开
-
单例模式的实现-懒汉模式【大话设计模式之爱你一万年:单例模式:我的女朋友只有你一个】
2.单例模式的实现-懒汉模式视频学习地址 ——《大话设计模式之爱你一万年》:https://dwz.cn/wqO0MAy7这一节我们先来看看一种实现模式,懒汉模式,这也是这么中实现方式要考虑的地方最多的一种方式,对于这种方式如果能够掌握的话,其它种方式就很容易掌握了。一、准备工作1.1 说明 例子说明:我有一个女朋友,女朋友是我的唯一。 那么这样的例子在程序怎么去表达出来 —— 我的女朋友,你是我的唯一? 没有女朋友的怎...原创 2020-12-22 16:07:33 · 14652 阅读 · 0 评论 -
大话设计模式之爱你一万年:系列文章 - 导读
大话设计模式之爱你一万年课程总介绍课程介绍六大设计模式原则,23种经典设计模式,实战 实战 再实战,手写代码为你一一解析。结合多年项目经验,为你带来设计模式的最佳指导。课程目标通过学习能掌握23种设计模式,规范编程风格,提高优化程序结构和效率的能力。学习收获(1)理解设计模式的意义和实现(2)写出诗一般的程序,代码优雅,新增功能轻松无障碍。(3)加深对Java语言的使用熟练度(4)提升程序员对项目开发过程中遇到问题的认知和解决问题的思路及方式...原创 2020-12-18 18:41:13 · 14944 阅读 · 1 评论 -
大话设计模式之爱你一万年:为什么要学习&收获什么?
大话设计模式之爱你一万年课程总介绍原创 2020-12-18 17:28:46 · 14434 阅读 · 1 评论 -
大话设计模式之爱你一万年:大话设计模式之爱你一万年由来
大话设计模式之爱你一万年的由来我有一个女朋友,我很爱很爱她,如果非要在这份爱上加上一个期限,我希望是…… 一万年。 在生活中,我的女朋友总是有十万个为什么?我在你心中是不是唯一的存在。 —— 《单例模式》喜欢我单手开法拉利的样子,但我又不会生产车,于是就让工厂来帮我生产,我想让你爱坐在宝马里笑。——《工厂模式》女朋友最近喜欢上了韩国电视剧《来自星星的你》,我们家没有电视也没有电脑,那就造一台电脑吧,爱不仅要说还要做。—— 《建造者模式》...原创 2020-12-18 17:31:38 · 14733 阅读 · 1 评论 -
大话设计模式之爱你一万年:第一章 设计模式基本概念:1.软件设计模式概述
一、软件设计模式的产生背景“设计模式”这个术语最初并不是出现在软件设计中,而是被用于建筑领域的设计中。 1977 年,美国著名建筑大师、加利福尼亚大学伯克利分校环境结构中心主任克里斯托夫·亚历山大(Christopher Alexander)在他的著作《建筑模式语言:城镇、建筑、构造(A Pattern Language: Towns Building Construction)中描述了一些常见的建筑设计问题,并提出了 253 种关于对城镇、邻里、住宅、花园和房间等进行设计的基本模式...原创 2020-12-18 18:48:02 · 14689 阅读 · 1 评论 -
大话设计模式之爱你一万年:第一章 设计模式基本概念:2.GoF的23种设计模式的分类和功能
学习说明:本篇的知识,只需要有一个大概的了解即可,在后面的章节中每个设计模式都会有详细的介绍。一、设计模式的分类设计模式有两种分类方法,根据模式的[目的]和模式的[作用范围]来分。1.1 根据目的来分根据模式是用来完成什么工作来划分,这种方式可分为创建型模式、结构型模式和行为型模式 3 种。(1)创建型模式(5种):用于描述“怎样创建对象”,它的主要特点是“将对象的创建与使用分离”。GoF 中提供了单例模式、工厂方法模式、抽象工厂模式、原型模式、建造者模式 5 种创建型模式。.原创 2020-12-18 18:50:46 · 14565 阅读 · 1 评论 -
大话设计模式之爱你一万年:第一章 设计模式基本概念:3.设计模式的六大原则
在设计《设计模式之爱你一万年》的时候,为了让我的23种设计模式有一个最基本的底层支撑,我总结出来了六大原则,希望我的23种设计模式能够尽量符合六大原则,以此来达到更可能的通用性。这一节来聊一聊设计模式的六大设计原则。一、设计模式六大原则(1)单一职责原则(Single Responsibility Principle,简称SRP )定义:一个类只有一个引起它变化的原因。通俗来讲:一个类只负责一项职责(不要乱拉关系,独善其身挺好)。问题描述:假如有类Class1完成职责T1,.原创 2020-12-18 18:53:09 · 14336 阅读 · 1 评论 -
大话设计模式之爱你一万年:第二章 创建型模式:单例模式:我的女朋友只有你一个:1.单例模式的基本概念
我的女朋友总是你喜欢问:我在你心中是不是唯一的存在?我:在我心里你就是独立无二的,谁都不能替代。女朋友:那你证明一下。我:Talk is cheap,Show you the code.我:不管怎么的new对象,都只有一个存在。—— 单例模式一、什么是单例模式1.1 专业术语 单例模式(Singleton Pattern)是一种常用的软件设计模式,其定义是单例对象的类只能允许一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的...原创 2020-12-18 18:55:57 · 14376 阅读 · 0 评论 -
大话设计模式之爱你一万年:第二章 创建型模式:单例模式:我的女朋友只有你一个:2.单例模式的实现-懒汉模式
这一节我们先来看看一种实现模式,懒汉模式,这也是这么中实现方式要考虑的地方最多的一种方式,对于这种方式如果能够掌握的话,其它种方式就很容易掌握了。一、准备工作1.1 说明 例子说明:我有一个女朋友,女朋友是我的唯一。 那么这样的例子在程序怎么去表达出来 —— 我的女朋友,你是我的唯一? 没有女朋友的怎么办呢?没有还不简单呢,那就new一个出来吧~1.2 女朋友的UML定义 我们来看下普通女朋友类的UML定义:...原创 2020-12-18 19:05:03 · 14437 阅读 · 0 评论 -
大话设计模式之爱你一万年:第二章 创建型模式:单例模式:我的女朋友只有你一个:3.单例模式的实现-饿汉模式
学习了懒汉模式的实现单例方式,那么饿汉模式So easy了。一、单例模式-饿汉模式1.1 定义 类加载的初始化阶段就完成了类的实例化。(1)类的初始化:是完成程序执行前的准备工作。在这个阶段,静态的(变量,方法,代码块)会被执行。同时在会开辟一块存储空间用来存放静态的数据。初始化只在类加载的时候执行一次。(2)类的实例化:是指创建一个对象的过程。这个过程中会在堆中开辟内存,将一些非静态的方法,变量存放在里面。在程序执行的过程中,可以创建多个对象,既多次实例化。每次实例化都会开...原创 2020-12-18 19:07:26 · 14557 阅读 · 0 评论 -
大话设计模式之爱你一万年:第二章 创建型模式:单例模式:我的女朋友只有你一个:4.单例模式的实现-静态内部类-懒加载的一种方式
接下来我们来看下静态内部类的实现方式:一、单例模式-静态内部类1.1 定义 使用类的静态内部类持有静态对象的方式来实现单例,属于懒加载的一种实现。1.2 实现 在单例的类中,需要定义一个静态内部类,在静态内部类进行定义一个外部类的静态变量,并且使用new进行对象的创建。具体代码如下:package com.kfit.singleton.innerclass;/** * 定义我的女朋友 * * @author 悟纤「公众号SpringBoot」...原创 2020-12-18 19:08:29 · 14532 阅读 · 0 评论 -
大话设计模式之爱你一万年:第二章 创建型模式:单例模式:我的女朋友只有你一个:5.单例模式的实现-枚举类型
这一节我们看下通过枚举类型来实现的单例。一、单例模式-枚举类型1.1 定义 通过枚举类型的特殊性,直接定义属性就是当前的实例对象来进行单例的实现。1.2 实现 直接定义枚举类即可:GirlFriend的代码:package com.kfit.singleton.enumsingleton;/** * 使用枚举类来实现单例. * * @author 悟纤「公众号SpringBoot」 * @date 2020-11-17 * @slog...原创 2020-12-18 19:09:52 · 14606 阅读 · 0 评论 -
大话设计模式之爱你一万年:第三章 创建型模式:工厂模式:我想让你坐在宝马里笑:1.工厂模式概念
我女朋友愿意和我一起骑着单车,享受着属于我们的时光,每次她那纯真的笑容,让我心情特别的舒畅。冬天的时候,骑在单车上特别的冷,这时候我特别想让她能坐在宝马里笑。《工厂模式》让我不在为生产车而烦恼。这一章我们主要涉及到了设计模式中的两个设计模式:工厂方法模式和抽象工厂模式。之所以放在一起,是因为这个设计模式具有一定的关联性。一、工厂模式概念在生活中什么是工厂:又称制造厂,是一类用以生产货物的大型工业建筑物。在代码中什么是工厂:通过定义一个单独的创建对象的类来创建其它的...原创 2020-12-18 19:12:17 · 14576 阅读 · 0 评论 -
大话设计模式之爱你一万年:第三章 创建型模式:工厂模式:我想让你坐在宝马里笑:2.工厂模式之无工厂时代
在上一节中我们了解到了工厂模式中设计到了设计模式,在接下里的章节,我们会根据提出的问题一步步的优化我们的代码,最终把工厂模式学精学透。一、工厂模式之无工厂时代我有一个愿望就是让我的女朋友能够坐在宝马里笑,想象着她开心的笑容,我心里也是开心满满。在这个没有专门生产宝马的年代(无工厂时代),为了让女朋友能够开开心心的于是乎我就自己来进行生产了。1.1 宝马图纸 – 类图 于是我就根据自己的天马行空的为我女朋友设计了两款宝马520和521,看我这名字取的都好,都是”(๑′ᴗ‵...原创 2020-12-18 19:16:32 · 14768 阅读 · 0 评论 -
大话设计模式之爱你一万年:第三章 创建型模式:工厂模式:我想让你坐在宝马里笑:3.工厂模式之简单工厂模式
在没有工厂的时代,客户真的什么都要操心,随着社会的进步,终于引来了工业革命。一、引言在没有工厂的时代,客户需要知道怎么去创建一款车,客户和车的生产就紧密耦合在一起了。为了降低耦合,就出现了工厂类,把创建宝马的操作细节都放到了工厂里面去,客户直接使用工厂的创建工厂方法,传入想要的宝马车型号就行了,而不必去知道创建的细节。这就是工业革命了:简单工厂模式。二、工厂模式之简单工厂模式从没有工厂的时代到迎来工业革命,经历了10几年的时间,我的爱车BMW520、BMW521经过长时间..原创 2020-12-18 21:52:29 · 14602 阅读 · 1 评论 -
大话设计模式之爱你一万年:第三章 创建型模式:工厂模式:我想让你坐在宝马里笑:4.工厂模式之工厂方法模式
上面我们对于BMW520、BMW521都是只有一个工厂来进行生生产,扩展性就会比较差。 由于简单工厂模式中只有一个工厂类来对应这些产品,所以这可能会把我们的上帝累坏了,也累坏了我们这些程序员。 于是工厂方法模式作为救世主出现了。 工厂类定义成了接口,而每新增的车种类型,就增加该车种类型对应工厂类的实现,这样工厂的设计就可以扩展了,而不必去修改原来的代码。 简单来说为了解决简单工厂模式中工厂方法过多的if else问题,我们使用了工厂方法模式一个具体产品类由一个...原创 2020-12-21 17:09:29 · 15168 阅读 · 0 评论 -
大话设计模式之爱你一万年:第三章 创建型模式:工厂模式:我想让你坐在宝马里笑:5.工厂模式之抽象工厂模式
夏天到了,我开着宝马,但是却看不到我女朋友开心的笑容了?我:宝贝,你这是怎么了?怎么不开心了。女朋友:你看这大热天的,咱们这个车蒙的慌,虽然你单手开着宝马是很酷,但是我已经热的没心情看你开车了。 我很爱我的女朋友,为了让我的女朋友能够再次开心起来,我就去找宝马公司,让他们给我车安装个空调。一、工厂模式之抽象工厂模式1.1 前言 随着客户的要求越来越高,宝马车需要配置空调。于是这个工厂开始生产宝马车和配置需要的空调。这时候工厂有二个系列...原创 2020-12-21 17:15:04 · 15310 阅读 · 0 评论 -
大话设计模式之爱你一万年:第三章 创建型模式:工厂模式:我想让你坐在宝马里笑:6.工厂模式在Spring框架和JDK源码中的应用
这一节我们看看工厂模式在Spring框架和JDK源码中的应用:一、Spring中的工厂模式1.1 简单工厂BeanFactory Spring中的BeanFactory就是简单工厂模式的体现,根据传入一个唯一的标识来获得Bean对象我们可以看到DefaultListableBeanFactory实现了这个工厂方法:我们看一下接口BeanFactory:DefaultListableBeanFactory和BeanFactory的关系:1.2 工厂...原创 2020-12-21 17:18:12 · 14818 阅读 · 0 评论 -
大话设计模式之爱你一万年:第三章 创建型模式:工厂模式:我想让你坐在宝马里笑:7.工厂模式实战之不同的支付渠道
在实际项目中,我们会引入支付宝支付和微信支付,如果是按照常规的设计我们会这么设计: 设计两个支付类AliPay和WeixinPay,然后在调用的时候,实例化相应的类来进行发起支付,这种方式对于调用者而言,不是很友好,扩展性不强。那么我们就可以使用简单工厂模式或者工厂方法模式进行优化。 这里我们使用简单工厂模式优化一下,工厂方法模式思路和我们上面讲的BMW是一样的。一、工厂模式实战之不同的支付渠道1.1 类图 只要了解了简单工厂模式,具体的编码还...原创 2020-12-21 18:03:05 · 14300 阅读 · 0 评论 -
大话设计模式之爱你一万年:第三章 创建型模式:工厂模式:我想让你坐在宝马里笑:8.工厂模式总结
这一节我们轻松一下,我们对于前面的简单工厂、工厂方法、抽象工厂做个总结。一、工厂模式1.1 定义简单工厂(Simple Factory):由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(继承自一个父类或接口)的实例。工厂方法(Factory Method):定义工厂父类指定公共的接口,而子类工厂则负责生成具体的对象(多个工厂)。抽象工厂(Abstract Factory):提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类;具体的工厂负责实现具体的产品实例.原创 2020-12-21 18:03:34 · 14511 阅读 · 0 评论 -
大话设计模式之爱你一万年:第四章 创建型模式:建造者模式:爱不仅要说还要做:1.建造者模式概念
我女朋友最近喜欢上了韩国电视剧《来自星星的你》,我们家没有电视也没有电脑,得到邻居家才能看。冬天要到了,我这么爱我的女朋友,我怎么忍心让我的女朋友冬天跑来跑去呢,不小心着凉感冒了,那不得疼在她身,痛在我心。 于是我就打算组装一台电脑让我的女朋友来追剧。 爱你一万年,不仅要说,还要去做。就这样开始了……一、什么是建造者模式1.1 生活中的例子1.1.1 盖房子我们在生活中盖房子,一般就是打地基,盖框架「用砖头或钢筋混凝土」,然后...原创 2020-12-21 18:06:31 · 14641 阅读 · 2 评论 -
大话设计模式之爱你一万年:第四章 创建型模式:建造者模式:爱不仅要说还要做:2.建造者模式之组装电脑
为了能够让我的女朋友能够在家就可以追剧(主要是我可以抱着她(๑′ᴗ‵๑)I Lᵒᵛᵉᵧₒᵤ❤),我开始了我的电脑组装之旅…一、自己动手丰衣足食 – 没有建造者模式1.1 类图 我根据对电脑的理解,电脑应该有CPU、内存、硬盘,然后设计出来了一张设计图(类图):1.2 编码实现 首先先把电脑的配置进行封装Computer:package com.kfit.builder.nobuilder;/** * 电脑 * * @author 悟纤「公...原创 2020-12-21 18:10:43 · 14492 阅读 · 0 评论 -
大话设计模式之爱你一万年:第四章 创建型模式:建造者模式:爱不仅要说还要做:3.建造者模式在Spring框架和JDK源码中的应用
我们看下建造者模式在Spring框架和JDK源码中的应用。一、JDK中的建造者模式1.1 StringBuilder/StringBuffer 在java中我们要构建一个字符串,一般是使用的String,但是String在操作上不够灵活,效率也不是很高,也是就有了StringBuilder/StringBuffer,屏蔽了用户追加数据的烦恼。StringBuffer中一部分源码,比StringBuilder多一个synchronized。 我们直接来看String...原创 2020-12-21 19:27:25 · 14690 阅读 · 0 评论 -
大话设计模式之爱你一万年:第五章 创建型模式:原型模式:为爱找份工作:1.原型模式概念
最近一阵子为了我的女朋友,不是造宝马(BMW520/BMW521)就是造电脑,资金耗费有点大。虽然我家大业大,但也耗不住我这么折腾呢,于是我决定找份工作好好磨练下自己,为爱找份工作,为爱加上期限 – 爱你一万年。找工作不得写简历吗,我就写呀写呀…为了提高我投简历的准确性,我觉得简历要写的多样化,不能全写一模一样,比如说我的期望薪资不能写成一样,因为我希望能够根据目标企业的情况来投递合适薪资的简历,这样中标概率大一点。 这大部分简历信息都是一样了,这要是每一份都重复的写,那不得累坏宝宝...原创 2020-12-21 19:29:47 · 14560 阅读 · 0 评论 -
大话设计模式之爱你一万年:第五章 创建型模式:原型模式:为爱找份工作:2.原型模式之复印简历
为了磨炼自己,为了让自己更成熟,为了让自己更快的成长,为了让自己的女朋友有一个美好的未来,我于是决定去找份工作。一、原型模式之复印简历1.1 打印简历 – new的方式首先定义这个简历类:package com.kfit.prototype.noprototype;/** * 简历类 * * @author 悟纤「公众号SpringBoot」 * @date 2020-11-23 * @slogan 大道至简 悟在天成 */public class Resume.原创 2020-12-21 19:33:43 · 14507 阅读 · 0 评论 -
大话设计模式之爱你一万年:第六章 结构型模式:适配器模式:i7爱妻:为爱找份工作:1.适配器模式概念
在前一阵子为了解决女朋友追剧的问题,使用《创建型模式:建造者模式》给女朋友组装了电脑。使用了一段时间后,我发现电脑携带还是不是很方便,出行的时候,就不能享受追剧的快乐了。经过不懈的努力,我研究出了微型的电脑,我取名为手机。但是目前还面临着一个问题,那就是手机要充电,但是电源电压是220V,手机一插上就爆炸了。为了解决手机充电的问题,我想需要有一个变压器(适配器)将220V的电压转换成5V的电压。经过这个问题的解决,我发现了一个新的设计模式《适配器模式》一、适配器模式基本概念1.1 .原创 2020-12-21 19:35:07 · 14482 阅读 · 0 评论 -
大话设计模式之爱你一万年:第六章 结构型模式:适配器模式:i7爱妻:为爱找份工作:2.适配器模式之类适配器
在这一节我们就看一看第一类:类适配器模式一、类适配器基本概念1.1 说明类适配器模式在编译时实现target(目标)接口。这种适配器模式使用了多个实现了期待的接口或者已经存在的接口的多态接口。比较典型的就是:target接口被创建为一个纯粹的接口。1.2 类图 如上图,因为java没有类多继承,所以只能实现Target接口,而且Target只能是接口。Adapter实现了Target接口,继承了Adaptee类,Target.operation()实现为Ada...原创 2020-12-21 19:38:43 · 14428 阅读 · 0 评论 -
大话设计模式之爱你一万年:第六章 结构型模式:适配器模式:i7爱妻:为爱找份工作:3.适配器模式之对象适配器
在这一节我们就看一看第一类:对象适配器模式一、对象适配器模式基本概念1.1 说明对象适配器模式在运行时实现target(目标)接口。在这种适配器模式中,适配器包装了一个类实例,然后适配器调用包装对象实例的方法。1.2 类图如上图,与类适配器模式不同的是,Adapter只实现了Target的接口,没有继承Adaptee,而是使用聚合的方式引用adaptee。二、电压转换例子说明2.1 需求一张图说明需求:嗯,就是电源适配器了。上面有这样两行:输...原创 2020-12-21 19:40:50 · 14615 阅读 · 0 评论 -
大话设计模式之爱你一万年:第六章 结构型模式:适配器模式:i7爱妻:为爱找份工作:4.适配器模式之缺省适配器
在这一节我们就看一看第一类:缺省适配器模式一、缺省适配器模式基本概念1.1 说明当不需要全部实现接口提供的方法时,可以设计一个适配器抽象类实现接口,并为接口中的每个方法提供默认方法,抽象类的子类就可以有选择的覆盖父类的某些方法实现需求,它适用于一个接口不想使用所有的方法的情况。在java8后,接口中可以有default方法,就不需要这种缺省适配器模式了。接口中方法都设置为default,实现为空,这样同样同样可以达到缺省适配器模式同样的效果。1.2 类图二、电压转换例..原创 2020-12-21 19:44:19 · 14707 阅读 · 0 评论 -
大话设计模式之爱你一万年:第六章 结构型模式:适配器模式:i7爱妻:为爱找份工作:5.适配器模式在Spring框架和JDK源码中的应用
这一节我们看看适配器模式在Spring框架和JDK源码中的应用:一、Spring中的应用Spring 框架使用适配器模式来实现很多功能。以下列出的一些在 Spring 框架中使用到适配器模式的类:JpaVendorAdapter HibernateJpaVendorAdapter HandlerInterceptorAdapter MessageListenerAdapter SpringContextResourceAdapter ClassPreProcessorAgent.原创 2020-12-21 19:47:59 · 14665 阅读 · 0 评论 -
大话设计模式之爱你一万年:第六章 结构型模式:适配器模式:i7爱妻:为爱找份工作:6.适配器模式实战之导出数据类型不同适配
我们在实际项目中,我们会有将数据导出到excel表格的需求。在一开始的时候,我们编写的是接收Map<String,Object>,但我们数据库查询出来的一般是List<Object>的类型,这时候我们怎么在不改变原先的代码的情况下,去优化我们的代码。在前期我们写了这么一个导出工具类:package com.kfit.adapter.example.v1;import java.util.Map;public class ExcelExport {原创 2020-12-21 19:53:39 · 14420 阅读 · 0 评论 -
大话设计模式之爱你一万年:第七章 结构型模式:装饰器模式:爱你就要让你更美丽:为爱找份工作:1.装饰器模式概念
我给女朋友研发出了iphone7之后,我女朋友迷上了自拍,到哪里都要拍拍拍…我女朋友原本就长得漂亮、身材又好,原生的手机拍照就能满足要求了。 但是她吧,看多了自己的照片之后,总是觉得缺少点美。 谁让我很爱我的女朋友呢,爱你一万年不能挂在嘴边呢,还是行动。于是我开发一款APP —— 美图秀秀,在拍照的基础上加上了美颜和滤镜的效果。 自从了美颜效果,我女朋友每天开心的不得了。看到她开心,我也是很开心 —— 因为你快乐,所以我快乐。 经过这次...原创 2020-12-21 19:55:50 · 14610 阅读 · 0 评论 -
大话设计模式之爱你一万年:第七章 结构型模式:装饰器模式:爱你就要让你更美丽:为爱找份工作:2.装饰器模式之照相机:美颜滤镜一个都不能少
女朋友迷恋拍照,怎奈拍照已不能满足。在我的不断探索下,我使用装饰器扩展了照相机的功能,增加了美颜和滤镜效果。一、装饰器模式之照相机类图 在经过我没日没夜的设计,我终于设计出了完美的设计图,堪称一绝,我都忍不住为我的聪明才智点赞:二、装饰器模式之照相机编码 万事俱备,打开开发工具开始编码来。2.1 抽象构件Component 先定义一个照相机的构件Camera,在这个接口中定义一个操作的方法,具体拥有什么操作,由具体的实现类进行实现:...原创 2020-12-21 20:01:16 · 14536 阅读 · 0 评论 -
大话设计模式之爱你一万年:第七章 结构型模式:装饰器模式:爱你就要让你更美丽:为爱找份工作:3.装饰器模式在Spring框架和JDK源码中的应用
这一节我们看看装饰器模式在Spring框架和JDK源码中的应用:一、Spring中的应用 Spring 框架使用装饰器模式构建重要功能,如事务、缓存同步和与安全相关的任务。让我们看看一些 Spring 实现此模式的功能:(1)BeanDefinitionDecorator: 它通过使用自定义属性来增强 bean 的定义。(2)WebSocketHandlerDecorator: 它用来增强一个 WebSocketHandler 附加行为。二、JDK中的应用...原创 2020-12-21 20:03:36 · 14967 阅读 · 0 评论 -
大话设计模式之爱你一万年:第八章 结构型模式:外观(门面)模式:冬天有你不再寒冷:1.外观模式概念
最近天气突然间一下子就变冷了,记得前两天温度还是25、26度。天气冷了,就不想动,不想离开暖和的被窝。要睡觉前的时候,女朋友总是说你去拉上窗帘、关掉电视、关掉灯。早上醒来的时候,女朋友总是说你去打开灯、打开电视、拉开窗帘。 宝宝也怕冷呢,大早上/大晚上的也不想动呢,但是我也不能让我的女朋友去做这个事情,谁让她是我的宝贝呢。 但是这难不倒拥有聪明才智的我,搞个一键开关不就完事了吗。 好像是很有道理,想法来了,说干就干…一、外...原创 2020-12-21 20:05:23 · 14551 阅读 · 2 评论 -
大话设计模式之爱你一万年:第八章 结构型模式:外观(门面)模式:冬天有你不再寒冷:2.外观模式之一键开关
为了解决女朋友可以一键开关灯、一键开关窗帘、一键开关电视这个功能。我对于家里的开关系统进行了优化。一、外观模式之一键开关类图 为了解决“一键开关”的问题,我加入了总开关的概念(也就是门面)了,只要和总开关交互,就能一键对电视、窗帘和灯进行操作了。先展示一下我帅气的类图:二、外观模式之一键开关编码2.1 子系统角色(SubSystem) 子系统在这个例子里就是灯、窗帘、电视,它们有相同的方法就是on(开)、off(关):SubSystemLight:...原创 2020-12-21 20:54:15 · 14531 阅读 · 0 评论 -
大话设计模式之爱你一万年:第八章 结构型模式:外观(门面)模式:冬天有你不再寒冷:3.外观模式在Spring框架和SLF4J中的应用
这一节我们看看外观模式在Spring框架和SLF4J中的应用:一、Spring中的应用1.1 Spring JDBC中的JdbcUtils Spring JDBC中的JdbcUtils对原生的JDBC进行封装,让调用者统一访问。二、SLF4J中的应用 其中Log4j、Logback都是日志框架,它们都有着自己的独立的Api接口。如果单独使用某个框架,会大大增加系统的耦合性。而SLF4J并不是真正的日志框架,它有一套通用的API接口。所以阿里开发...原创 2020-12-21 20:55:53 · 14563 阅读 · 0 评论 -
大话设计模式之爱你一万年:第九章 结构型模式:桥接模式:结婚发消息不是一件简单的事情:1.无桥接模式之消息发送
说在前面的话:桥接模式(Bridge)会比较绕,所以我们打算换一种讲解方式,从一个例子从而引出桥接模式。 设计模式学到最后,看起来既像这个,又像那个,不要在意这心,设计模式的核心是提升代码的扩展性,如果达到了这点,又何必在于是什么设计模式呢。一、场景问题1.1 故事场景经过多年爱情的经营,我和女朋友终于走到了婚姻的殿堂。 结婚是一件开心的事情,但事情也特别多和杂…. 这不…. 我女朋友又找我来了…女朋友:亲爱的,你看下我整理了下名单。你给他们发送下信...原创 2020-12-21 21:01:14 · 14491 阅读 · 0 评论 -
大话设计模式之爱你一万年:第九章 结构型模式:桥接模式:结婚发消息不是一件简单的事情:2.桥接模式基本概念
用来解决上述问题的一个合理的解决方案,就是使用桥接模式(Bridge)。那么什么是桥接模式呢?一、桥接(Bridge)模式基本概念1.1 定义将抽象部分与它的实现部分分离,使它们都可以独立地变化。 在上面的例子中我们之前分析了有两个维度:发送消息的方式和消息的类型。 发送消息的方式:就是微信、手机短信、邮件。 消息的类型:普通消息,加急消息、特急消息。 那么这里的话,抽象部分实现部分是什么呢?消息发送的核心功能就是发送消息了,所以实...原创 2020-12-21 21:04:41 · 14493 阅读 · 0 评论 -
大话设计模式之爱你一万年:第九章 结构型模式:桥接模式:结婚发消息不是一件简单的事情:3.桥接模式之消息发送
在上面我们对于桥接模式的定义有了一个基本的了解,接下来我们要重构我们之前的代码。一、消息发送4.0:桥接模式 接下来我们根据桥接模式的定义来进行编码,主要分为两大部分抽象部分和实现部分。我们看下最终完成的类图:1.1 实现接口(Implementor) 实现部分这里的例子中就是定义消息发送方式的一个接口即可,这里取名为MessageImplementor:package com.kfit.bridge.message.v4;/** * * Imple...原创 2020-12-22 14:05:13 · 14469 阅读 · 1 评论