
设计模式
该码就码
这个作者很懒,什么都没留下…
展开
-
设计模式(18):状态模式
本章节我们来学习状态模式,什么是状态,世间万事万物都有状态说法,状态是人或事物表现出来的形态。这个词大概的意思就是这样,状态在生活中随处都有,比如水的状态有固态(冰),液态、气态等状态,有比如汽车有运行状态、停止状态、故障状态等。。。接下来我们来看看状态模式的定义:**当一 个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其类,状态模式的核心是封装,状态的变更引起了行为的变更,从外部看起...原创 2019-12-28 16:29:32 · 217 阅读 · 0 评论 -
设计模式(17):解释器模式
本章节我们说说解释器模式:给定一门语言,定义它的文法的一种表示,并定义一个解释器,该解释器使 用该表示来解释语言中的句子。这个东西呢我们基本上使用不到,但是强大的Java社区为我们提供了很多强大的工具让我们来解释(就是表达式运算),工具都有下Expression4J、 MESP(Math Expression String Parser)、Jep等工具,具体的使用方法,读者自己研究,此处不在多说。...原创 2019-12-28 13:47:39 · 102 阅读 · 0 评论 -
设计模式(16):访问者模式
本章节说说访问者模式,由于是同较少,因此不花太多精力,特此转发一篇简单移动的文章:https://www.jianshu.com/p/1f1049d0a0f4转载 2019-12-28 11:05:25 · 85 阅读 · 0 评论 -
设计模式(15):备忘录模式
本章节我们来聊一聊备忘录模式,备忘二字应该好理解吧,什么是备忘呢?我的理解是这样的:就是说早在做一件事情之前,我需要对某些资源进行备份,以便于在出现失败后恢复到处理之前的状态。跟mysql事务实现逻辑差不多哟,在改数据之前先将原来的数据写入日志,如果修改失败,将日志的数据回滚到库。备忘录模式呢也是来干这个事情的,我们先看看备忘录模式的定义:备忘录模式(Memento Pattern)提供了一种弥...原创 2019-12-09 18:23:09 · 177 阅读 · 0 评论 -
设计模式(14):观察者模式
本章节我们来学习一下观察者模式,我们先说一说什么是观察者模式,‘观察’二字应该不难理解嘛,比如你在玩王者的时候,你是打野,然后你要gank(就是去打架)对面射手,你一般会先藏在草里面,看看对面射手会不会进入你的攻击范围,一旦进入你的攻击范围,你就三下五除二搞死对面的射手,这个过程就有观察的场景,当你看看对面射手是否进入你的攻击范围,这就是在观察对面射手的位置嘛,所以我们可理解观察就是监控盯着你在意...原创 2019-12-09 10:52:21 · 184 阅读 · 0 评论 -
设计模式(13):适配器模式
本章节我们学习适配器模式,适配两个字的含义是 适配就是将一些东西针对某一具体的目标进行逻辑映射操作。理解应该不抽象,大白话举例说明一下,例如 我们国内的居民用电的电压是220V,也就是说我们的在使用自己电脑的时候,电源需要是220V的我们的电脑才能使用,但是有一天我去美国出差,我带上了我的电脑,我过去后打开电脑,电源一插上,尼玛 电脑无法开机啊,什么情况,电脑坏了吗?突然恍然大悟,美国的居民电压...原创 2019-12-06 10:07:28 · 144 阅读 · 0 评论 -
设计模式(12):策略模式
本章节我们来说一说策略模式,策略模式定义是:**定义一组算法,将每个算法 都封装起来,并且使它们之间可以互换。**算法就是策略,他们之间可以互换是什么意思呢,就是说使用者可以随意切换算法,例如 在A场景需要使用A算法,B场景需要使用B算法,切换就是这个意思。理解起来应该是比较简单的,下面我们通过一个类图来看看策略模式的结构:这个是通用类图,结构说明:IStratrgy :策略接口Concr...原创 2019-12-05 10:48:07 · 252 阅读 · 0 评论 -
设计模式(11):装饰模式
本章节我们来说一说装饰模式,装饰是什么,从字面上理解就是,装饰一下事物,如果汽车改装,房子装修,都是装饰,那我们就简单给装饰模式下一个定义,让原来的事物变成一个更好更符合我们需求的事物,软件领域里面的定义为:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活。怎么理解呢?比如我们有一个 小学生 对象Object 他有一个行为(方法),这个行为是啥呢?,就是报告成绩,...原创 2019-12-04 15:40:36 · 180 阅读 · 0 评论 -
设计模式(10):责任链模式
本节我们来说一说责任链模式,什么是责任链模式,很多人的定义为:**使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该 请求,直到有对象处理它为止。**定义应该是比较好理解的,说白了就是解决我们在处理一个请求/操作的时候,需要具体的确定是那个处理器来处理的问题,只不过我们会定义很多处理器,在处理器里面维护一个next 处理器(类似链表)...原创 2019-12-04 14:22:00 · 177 阅读 · 0 评论 -
设计模式(9):命令模式
命令模式相信大家都遇到过,命令模式也比较简单,类图清晰。接下来我们先说定义:将一个请求封装成一个对象,从 而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。 理解也比较难,我们就大白话说一下,其实命令模式就是将请求/操作 封装成一个命令,当需要请求/操作的时候,给我一个具体的命令,我用命令执行器执行此命令来达到你的需求。下面请看类图:● Rece...原创 2019-12-02 17:53:23 · 172 阅读 · 0 评论 -
设计模式(8):中介者模式
中介者模式主要解决的问题是,模块或者类之间的相互依赖、关联的问题。如下图就是典型的相互依赖、关联的问题。类图如下:这种情况我们就可以使用中介者模式进行整理,示意图如下:所谓的星形结构类图如下:这就是我们的使用场景,接下来我们引出中介者模式的定义:用 一个中介对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使其耦合松散,而且可以 独立地改变它们之间的交互。模板类...原创 2019-11-28 11:35:09 · 149 阅读 · 0 评论 -
设计模式(7):原型模式
原型模式,太简单了,所有模式中最简单的一个,类图如下:图片看起来有点莫名其妙,还是说人话吧:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。其实主要就是对象拷贝的问题,我们只需要实现Cloneable接口就实现了原型模式,看如下代码:MailTest:Test:原型模式就这么简单,只需要注意对象是=的深浅拷贝就好。...原创 2019-11-27 17:40:31 · 145 阅读 · 0 评论 -
设计模式(6):代理模式
我们先说一下什么是代理?在生活中有哪些代理的使用场景?1、代理其实就是帮助某些事物提供一些服务,比如房屋中介公司,他们就是代理,当你要买房的时候,你需要知道很多房产的信息,然后你很难获取到比较全的数据,那怎么办呢,就去找代理(房屋中介公司),代理会问地产开发商房子的价格、地段、格局等。。。信息,然后再给你。这就是代理干的事情。在开发系统中我们可能也会遇到这种情况,这个是时候代理模式就派上用场了。...原创 2019-11-27 13:53:46 · 149 阅读 · 0 评论 -
设计模式(5):建造者模式
1.先说定义:建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表 示。这样说比较难理解,我们通俗一点,就是一类产品,我们将其构建过程抽象化,然后就能通过不同的实现构建属性不同的对象。类图如下所示:我们以代工厂构建手机为例:制造手机,手机有不同的型号,但是手机的基础部件名称基本上一样,如机身、屏幕、话筒、电池、听筒。。那我们可以模拟构建不同型号的手机;代码...原创 2019-11-19 14:48:28 · 135 阅读 · 0 评论 -
设计模式(4):模板方法模式
模板方法模式比较简单,咋们先看定义:定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 还是比较难理解吧,这么说就是 父类定义整个结构,结构的实现细节交给子类实现。类图如下:我们在抽象类中的templateMethod()中会调用doAnything()、doSomethig()方法来定义结构,但是结构的细节实现有Concre...原创 2019-11-08 14:52:43 · 166 阅读 · 0 评论 -
设计模式(3):抽象工厂模式
前面说了简单工厂模式 + 工厂方法模式,今天来说一说抽象工厂模式:抽象工厂模式用来干嘛的呢?我们这么来说:比如 人:从肤色的维度有三种肤色 从性别的维度有两种性别 组合起来就是6种人(对应6中具体的实现),类似排列组合。从设计角度来看,一个具体的对象通过两个 坐标就可以确定:肤色和性别,如图9-1所示。那在创建这六种人的时候,我们就需有一个工厂既能确定人...原创 2019-11-08 14:34:51 · 183 阅读 · 0 评论 -
设计模式(2):工厂方法模式
我们经常会碰见在系统中需要创建各式各样的对象,除了直接new 这种(pu tong)骚操作,我们还有什么办法呢?答案就是我们今天讲的主角:工厂方法模式,我们先看看工厂方法模式(简单工厂方法)的类图:女娲造人的类图:代码结构如下:具体代码:AbstractHumanFactoryHumanFacrtory:IHuman:BlackHuman:WirteHuman:Ye...原创 2019-11-07 15:14:30 · 285 阅读 · 0 评论 -
设计模式(1):单例模式
废话不多说,单例模式的含义就是:定义的类在系统中只能创建一个实例。编写模板:1、私有化构造函数。2、提供共有函数获取单实例。单例模式的写法大致有五种,有两种写法差不太多,所以我们主要讲4中写法。1、饿汉式:顾名思义,就是在获取单例对象之前就创建好对象,代码如下:2、懒汉式:顾名思义,比较懒,当去获取单实例对象的时候菜创建,代码如下:3、静态内部类,代码如下:4、枚举实现单例,...原创 2019-11-07 14:38:27 · 151 阅读 · 0 评论