![](https://img-blog.csdnimg.cn/20210618213102957.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
设计模式
文章平均质量分 72
设计模式
叶 落
这个作者很懒,什么都没留下…
展开
-
访问者模式
文章目录访问者模式1. 介绍优点缺点2. 例子3. 总结访问者模式1. 介绍访问者模式(Visitor Pattern)是一种行为型模式。表示一个作用于某些对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。简单理解:有一个工厂,其中有机械手、传送带、流水线等,你是一个工程师(访问者),你将你写好的代码输入到工厂的控制主机中,就为工厂中的设备都定义了新的功能。可以说,这些新的功能是在你的身上(代码),只要你一访问工厂,就为工厂中的设备定义了新的操作。.原创 2021-06-16 17:01:37 · 157 阅读 · 0 评论 -
模板模式
文章目录模板模式1. 介绍优点缺点2. 例子模板模式1. 介绍模板模式(Template Pattern)是一种行为型模式。定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定的步骤。简单理解:完成一件事情需要固定的几个步骤,但每一个步骤根据对象的不同会有不同的细节;就可以在父类中定义一个完成该事情的总方法(模板),按照完成事情的步骤去调用其每个步骤的实现方法,每个步骤的实现方法,由子类去完成。优点将每个步骤的具体实现延迟到子类中.原创 2021-06-16 15:39:47 · 548 阅读 · 0 评论 -
策略模式
文章目录策略模式1. 介绍优点缺点2. 例子3. 总结策略模式1. 介绍策略模式(Strategy Pattern)是一种行为型模式。定义一系列的算法,把它们一个个封装起来,并且使得它们可以相互替换,使得算法可以独立于使用它的客户而变化。例子:常见的排序方法有冒泡排序、插入排序、归并排序、希尔排序等,而某个类需要使用一种排序方法,你可以将这些排序方法分别封装到类中,这些类都需要实现一个 Strategy 接口。在需要使用某种算法的类中,替换其中内嵌的 Strategy 对象就可以实现排序方法.原创 2021-06-14 21:22:10 · 202 阅读 · 0 评论 -
空对象模式
文章目录空对象模式1. 介绍优点2. 例子3. 总结空对象模式1. 介绍空对象模式(Null Object Pattern)使用空对象来代替null,空对象不是代表为空,而是反映的是一种不做任何动作的关系,且这个空对象可以提供一种默认的行为。优点加强了系统的稳定性。使用空对象来代替 Null,避免使用 Null 造成的各种异常。2. 例子有一个抽象类 AbstractCustomer ,它有两个实现类,一个是 RealCustomer ,另一个是NullCustomer, Nul.原创 2021-06-14 19:58:45 · 142 阅读 · 0 评论 -
状态模式
文章目录状态模式1. 介绍优点缺点2. 例子3. 总结状态模式1. 介绍状态模式(State Pattern)是一种行为型模式。允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。简单理解:就像一个可以替换针头的螺丝刀,如果替换为一字,就可以拧一字螺丝,如果替换为梅花,就可以拧梅花螺丝。优点将每一种状态对应的功能都放到了一个类中。每一种状态都对应一种 state 对象,因此每一种状态的功能都放在了对应的State类中了,有利于维护。易于扩展。如果增加了新的状态,只.原创 2021-06-13 18:58:58 · 125 阅读 · 0 评论 -
观察者模式
文章目录观察者模式1. 介绍优点缺点2. 例子3. 总结观察者模式1. 介绍观察者模式(Observer Pattern)是一种行为型模式。定义对象间的一种一对多的关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。简单理解:班长在群中通知明天开会,班级中的每一个都会知道这个消息并更新自己的时间安排。班长是主体,而班级中其他人都是观察者,都在观察班长发的消息, 一旦班长发出了新的消息,他们都会更新自己的时间安排。优点目标和观察者之间是抽象耦合的。被观察者所知道.原创 2021-06-13 16:11:38 · 179 阅读 · 0 评论 -
备忘录模式
文章目录备忘录模式1. 介绍优点缺点2. 例子3. 总结备忘录模式1. 介绍备忘录模式(Memento Pattern)是一种行为型模式。将对象的状态保存在它的备忘录对象中,以后就可以使用备忘录对象来将对象恢复到之前的状态中。简单理解:现在有一个订单,将这个订单的信息保存到备忘录中,相当于将这个订单复制了一份。以后,我们就可以使用备忘录将这个订单的状态恢复到之前的状态。优点使得状态信息可以恢复。由于备忘录的存在,使得状态的恢复变得非常简单。实现了信息的封装。我们只需要使用恢复状态的接.原创 2021-06-13 15:03:00 · 158 阅读 · 0 评论 -
迭代器模式
文章目录迭代器模式1. 介绍优点缺点注意2. 例子3. 总结迭代器模式1. 介绍迭代器模式(Iterator Pattern)是一种行为型模式。提供一个迭代器来实现对聚合对象中的元素的遍历。简单理解:有一个集合,其中有许多元素,可以获取这个集合的不同迭代器来达到不同的遍历效果。java 中的 List、Set、Map 等集合类型都提供了获取其迭代器的接口。优点使用方便。要遍历容器,获取到它的迭代器就可以了,并且容器类型的改变对整体的影响较小。封装性。将对象的内部结构和遍历的过程都封.原创 2021-06-13 13:55:15 · 99 阅读 · 0 评论 -
中介者模式
文章目录中介者模式1. 介绍优点缺点2. 例子3. 总结中介者模式1. 介绍中介者模式(Mediator Pattern)是一种行为型模式。中介者模式就是使用一个中介者来处理不同类之间的通信,从而降低这两个不同类之间的耦合度。简单理解:假设现在有许多的房东,每一个房东现在都有许多的房子要出售,如果有一个客户,他想从这些房东手中买一栋合适的房子。那么,客户就会和所有的房东产生联系。中介者模式就是提供一个中介,中介管理了所以的房东的房源,客户买房子只需要和中介联系就可以了。由此,之前客户和多个房东.原创 2021-06-12 22:36:06 · 216 阅读 · 1 评论 -
解释器模式
文章目录解释器模式1. 介绍优点:缺点:注意:2. 例子3. 总结解释器模式1. 介绍解释器模式(Interpreter Pattern)是一种行为型模式。给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。简单理解:例如给定一个表达式 a+b,让后设置 a 为1,b 为2,计算 a + b 的值。可以定义一个值解释器,它用来解释变量 a 和变量 b 的值,定义一个加法解释器,它用来解释 a + b ,即先通过值表达式解释变量 a 和变量 b 的值,然.原创 2021-06-12 20:11:08 · 3175 阅读 · 0 评论 -
命令模式
文章目录命令模式1. 介绍优点:缺点:2. 例子3. 总结命令模式1. 介绍命令模式(Command Pattern)是一种行为型模式。将命令设计成对象,并为其指定命令的接收者和它要执行接收者的那个方法,当控制器接收到命令后,就执行命令。简单理解:假如我们有一台电视机,它有切换到某个频道的功能,而现在又有三条命令:切换到cctv1、切换到cctv2、切换到cctv3,每条命令又绑定了电视机的切换到cctv1、cctv2、cctv3这些方法,当我们按下遥控器时,就执行命令,而每一条命令执行时就会.原创 2021-06-06 23:00:02 · 147 阅读 · 0 评论 -
责任链模式
文章目录责任链模式1. 介绍优点缺点2. 例子3. 总结责任链模式1. 介绍责任链(Chain Of Responsibility)模式是一种行为型模式。将处理请求的对象串成一条链,并将请求沿着这条链传递下去,使得每一个对象都有机会处理请求。简单理解:责任链模式很像流水线,如果有一个商品从传送带上过来了,如果是一瓶果汁,负责为果汁贴标签的人就会为其贴标签,负责将果汁进行装箱的人就会将其装箱;如果是一步手机,检查质量的人会检查它的质量,贴合格证的人会检查手机是否合格并为它贴合格证。优点降.原创 2021-06-04 13:09:37 · 328 阅读 · 0 评论 -
代理模式
文章目录代理模式1. 介绍优点缺点注意2. 例子3. 总结代理模式1. 介绍代理模式(Proxy Pattern)是一种结构型模式。代理模式就是为对象创建它的代理对象类控制对对象的访问。简单理解:和现实中的代理人一样,如果一个人有代理人,那么你想要拜访这个人,你首先是需要和他的代理人打交道,这样就控制了你对他本人的直接访问。优点控制对对象的访问。由于对象的代理的存在,访问对象需要去访问它的代理对象,从而间接的访问对象,那么,就可以用代理对象来控制对被代理对象访问。职责清晰。代理对象就.原创 2021-06-03 18:16:09 · 134 阅读 · 0 评论 -
享元模式
文章目录享元模式1. 介绍优点:缺点:2. 例子3. 总结享元模式1. 介绍享元模式(Flyweight Pattern)是一种结构型模式。当需要使用某个对象时,享元模式会先去查找是否存在相同的对象,如果存在,就使用已经存在的对象;如果不存在,才会去创建新的对象;这样就可以减少对象的数量,降低内存消耗和提高性能。简单理解:享元模式和我们的共享单车很像,如果我们需要使用共享单车,我们不需要去购买一辆新的单车,只需要去找一辆共享单车就可以了。优点:减少对象的数量。如果对象需要消耗恒很多的资.原创 2021-06-01 20:14:49 · 171 阅读 · 0 评论 -
外观模式
文章目录外观模式1. 介绍优点缺点2. 例子3. 总结外观模式1. 介绍外观模式(Facade Pattern)是一种结构型模式。为子系统中的所有接口定义一个简单易用的高层接口,这个高层接口使得这个子系统简单易用。简单理解:有一个自动化的仓库,它内部的功能很复杂,里面有许多传送带、货架、机器人,但是这个仓库只提供了两个接口,一个是向仓库中存储货物的接口,另一个是从仓库中取货物的接口,我们只需要调用这两个接口就可以使用这个仓库了,至于里面复杂的逻辑、结构,都不需要我们关心。优点使得子系统.原创 2021-05-31 10:30:59 · 416 阅读 · 0 评论 -
装饰器模式
装饰器模式1. 介绍装饰器(Decorator Pattern)模式属于结构型模式。装饰器模式可以在不修改原有类的情况下扩充新的功能。简单理解:假如现在有许多塑料制品,它们都是白色的。如果我想要其他颜色的塑料制品,可以使用不同颜色的原料来制作不同颜色的塑料制品,但更简单的方式是将这些塑料制品装饰一下,给它们喷不同颜色的漆。优点在不影响其他对象的情况下,以动态的、透明的方式给单个对象添加职责。将目标对象传入装饰类,进而生成该对象的装饰对象,装饰对象在原有对象的基础上增加了新的属性和方法。对象原创 2021-05-30 21:59:56 · 152 阅读 · 0 评论 -
组合模式
文章目录组合模式1. 介绍优点缺点2. 例子3. 总结组合模式1. 介绍组合模式(Composite Pattern)是一种结构型模式。将对象进行组合来达到类似于数这种层级关系。简单理解:假设一个公司只有一个老板,有几个CEO,每一个CEO下面又有1个或多个组长,而每个组长下面又会有若干名员工,这是不是很像数据结构中的树,老板就是根节点,CEO和组长下面可以有若干子节点,而员工就是叶子节点,因为员工下面是没有子节点的(员工不管理任何人)。优点很方便的表示各个对象之间的层级关系。由于组.原创 2021-05-30 18:37:37 · 202 阅读 · 0 评论 -
过滤器模式
过滤器模式1. 介绍过滤器模式(Filter Pattern)是一种结构型模式。过滤器模式提供了多种过滤接口,你可以将这些过滤接口进行组合来达到你想要的过滤效果。简单理解:有一个饮水机的滤芯(接口),它有大小,只有符合大小的过滤器才能装入,现在有木炭过滤器(实现类)、细菌过滤器(实现类)、杂质过滤器(实现类)、异味吸附器(实现类)这几种过滤器,它们都和滤芯的大小一样。所以,你可以随意将这些过滤器进行组合来达到不同的过滤效果。2. 例子类图:Criteria接口是所以过滤器类都必须实原创 2021-05-30 17:41:12 · 956 阅读 · 0 评论 -
桥接模式
桥接模式1. 介绍桥接模式(Bridge Pattern)是一种结构型模式。桥接模式可以将抽象部分和它的实现部分分离,使它们都可以独立地变化。可以这样理解:有一个图形类,它是一个抽象类,这个图形有两个关键的属性:方位和颜色。你可以通过继承来实现不同方位、不同颜色的图形,但是继承机制将抽象类和它的实现固定在一起,这就会使得对抽象部分和实现部分独立的更改、扩充、复用。也就是创建新的方位、新的颜色的图形会非常的困难。但是,可以让继承了图形类的所有类的构造方法中都需要传入另一个实现了颜色接口的对象,从而达到原创 2021-05-27 22:55:41 · 211 阅读 · 0 评论 -
适配器模式
适配器模式1. 介绍适配器模式(Adapter Pattern)是一种结构型模式。适配器模式是用来合并两个接口的功能。可以这样理解:有一个非常大的商城实现了商城接口,这个商城没有提款和存钱的功能,而提款和存钱的功能银行接口提供了,那这个商城只需要实现银行接口不就可以实现提款和存钱的功能了吗?但是,如果银行接口中还有许多其他的方法,例如:借款、金融服务等,而这些功能是商城不需要的,这就很麻烦。可以在商城中增加一个银行柜台(实现了商城接口并内嵌了一个银行对象),当客户需要提款和存钱的时候,就调用银行柜台原创 2021-05-22 15:19:16 · 195 阅读 · 0 评论 -
原型模式
原型模式1. 介绍原型模式(Prototype Pattern)是一种设计型模式。原型模式就是创建重复的对象,同时有能保证性能。简单理解:就类似于细胞分裂,一个细胞分裂成两个一模一样的细胞。优点提高性能。如果一个对象创建很消耗资源,而在克隆这个对象能满足需求的情况下,克隆肯定会比重新创建一个一模一样的对象更节省资源。缺点在某些情况下,克隆一个对象可能会比创建一个一模一样的对象更麻烦,因为要考虑克隆对象如何实现、安全问题等。必须实现 Cloneable 接口注意原型模式和单例原创 2021-05-18 22:09:43 · 159 阅读 · 0 评论 -
建造者模式
建造者模式1. 介绍建造者(Builder Pattern)模式是一种创建型模式。将一个复杂对象由不同的简单对象组合起来,然后提供了获取复杂对象的接口。简单理解:当我们去餐厅的时候,我们可以点饮料,装饮料的有杯子、瓶子、碗,饮料有啤酒、可乐、咖啡等,饮料也可以是冷的、加冰的、热的等。建造者模式就是将这些包装方式、饮料类型、加热类型组合起来,当你需要一瓶冰可乐的时候,直接调用相关的接口就可以了。优点对复杂对象的创建过程进行了封装。用户不用知道一瓶冰可乐是如何制作的,只需要享用冰可乐就可以了。便原创 2021-05-17 13:36:54 · 96 阅读 · 0 评论 -
单例模式
单例模式1. 介绍单例模式(Singleton Pattern)是一种创建型模式。**单例模式就是保证某个类在内存中永远只存在一个实例。**在许多项目中,只会有一个数据库连接池,这就是单例模式最简单的例子。优点保证内存中只存在单例类的一个实例,减小了内存消耗。提供了对单一实例的受控访问。缺点由于单例类不能被继承,扩展很麻烦。违背了单一职责原则,单例类充当了工厂的角色,又充当了产品的角色。2. 例子关键:创建一个单例类,其中提供了获取单例对象的接口,并保证了单例对象在内存中有且仅有原创 2021-05-17 10:44:58 · 86 阅读 · 0 评论 -
抽象工厂模式
抽象工厂模式1. 介绍抽象工厂模式(Abstract Factory Pattern)是一种创建型模式。在这个模式中,有一个超级工厂,超级工厂中有获取普通工厂的方法,而普通工厂中有获取复杂对象的方法。可以这样理解:超级工厂是工厂的工厂,我们可以用超级工厂来获取造纸厂、家电厂、手机厂等,有了造纸厂,我们就可以从造纸厂中获取卫生纸、书本、纸箱等,而有了家电厂,我们就可以从家电厂中获取洗衣机、冰箱等家电了。优点将不同种类的物品都划分到了相应的工厂中了,方便管理。将复杂对象的创建过程都封装到了工厂类的原创 2021-05-16 22:21:08 · 104 阅读 · 0 评论 -
工厂模式
工厂模式1. 介绍工厂模式(Factory Pattern)是一种创建型模式。工厂方法的核心在于工厂类,这个工厂类中提供了获取复杂对象的接口,你调用这个接口就可以获取到对象。优点:将复杂对象的创建过程隐藏在了工厂类的方法中,调用工厂类中的接口就可以获取到对象,而无需关心复杂对象的创建过程。要更改创建对象的具体过程,只需要在工厂类中获取对象的接口中做统一更就可以了。如果想要新增某一类产品,只要新创建一个这一类产品的工厂类就可以了。缺点:由于有工厂类的存在,增加了类的数量限制了对象创建的原创 2021-05-16 21:21:31 · 117 阅读 · 0 评论 -
类图中的6大关系
类图中的6大关系1. 依赖关系(Dependency)如果在一个A类中用到了另一个B类,那么就说A类依赖B类。类图表示如下:只要B类满足下面条件中的任意一个,就说A类依赖B类:A类中用到了B类A类中有B类型的成员变量B类是A类方法的返回类型B类是A类方法的参数类型A类的方法中用到了B类2. 泛化关系(generalization)泛化关系可以说是继承关系,是依赖关系的特例。用类图表示:3. 实现关系(Implementation)B类实现了A类,就说A类和B类之间有实现关系原创 2021-05-06 22:41:25 · 29632 阅读 · 7 评论 -
Eclipse安装AmaterasUML
在Eclipse中安装AmaterasUML后就可以在Eclipse中画UML图了,下面是安装步骤。1. 点击Help,选择Install New Software…2. 按照下图3. 按照下图4. 按照下图5. 关闭Eclipse6. 下载jar包并安装在浏览器中打开网址:http://sourceforge.jp/projects/amateras/downloads/56447/AmaterasUML_1.3.4.zip/可能有点慢,耐心等待…下载Zip包。将下载的zip原创 2021-05-06 20:48:54 · 1983 阅读 · 2 评论