java设计模式
谢谢谢谢呵
java工程师
展开
-
设计模式学习-备忘录模式
备忘录模式备忘录模式是为了实现系统中的撤销操作而设计的,当用户操作失误需要撤销操作返回到某个历史状态时可以去除实现保存的历史状态来覆盖当前状态。备忘录模式本身比较简单,在java网络应用中用的也比较少,因此加单介绍一下,并写了一个最简单的实例。定义在不破坏封装的前提下捕获一个对象的内部状态,并且在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。结构Originato...原创 2019-06-27 01:39:23 · 128 阅读 · 0 评论 -
设计模式学习-解释器模式
解释器模式解释器模式用于对某种特定的语句进行分析和执行,当我们需要使用一些简单的语句来实现特定的操作的时候,只需要输入按照语言规则编写的语句,那么通过解释器模式可以按照预先定义的规则进行解析和执行。定义给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解析语句中的句子。结构AbstractExpression抽象表达式。终结符表达式和非终结符表达式的父类,定...原创 2019-05-03 13:43:54 · 94 阅读 · 0 评论 -
设计模式学习-迭代器模式
迭代器模式迭代器模式一般设计用来对一个容器对象进行遍历,通过引入一个迭代器,将容器的存储功能和遍历功能进行分离,容器只有存储功能,遍历功能由迭代器来完成,进行了职责的分离,更加符合单一职责原则。在使用迭代器模式的过程中,除了功能的分离,还有另一个好处:当一个容器接口有不同的实现的时候,为每一个实现提供了一个统一的遍历接口,这样一方面具体实现不需要对外暴露它的内部结构,另一方面调用方也不用关系实...原创 2019-06-22 16:58:58 · 114 阅读 · 0 评论 -
设计模式学习-中介者模式
中介者模式对于存在着多对多的复杂调用关系的系统,中介者模式提供了一种解决这种复杂关系的处理方案。假设一个系统中有4个对象相互作用,其中一个对象发生了变化,其他3个对象都要执行某个方法:如果每个对象都关联3个对象,那么关联关系将比较复杂,并且难以维护。我们可以设置一个中介者类,关联所有对象,当一个对象发生变化时,由它对其他3个对象进行通知,化繁为简。通过中介者类的中转作用,各个同事对象之间不...原创 2019-06-27 00:10:15 · 98 阅读 · 0 评论 -
设计模式学习-状态模式
状态模式在某些情况下,一些对象存在着比较多的状态,在不同的状态下,执行不同的方法,通常的解决办法就是为每个状态编写一个if…条件进行判断。当状态比较多,并且行为复杂的时候,会导致代码的可维护性、灵活性、扩展性降低,并且在增加新的状态的时候,代码也要随之修改,违背了开闭原则。状态模式被设计来解决系统中复杂对象的状态变化以及不同状态下行为的封装问题。当系统中的某个对象存在多种状态,并且这些状态之间...原创 2019-07-23 21:44:09 · 81 阅读 · 0 评论 -
UML类图
UML(Unified Modeling Language),统一建模语言,是当前面向对象软件系统建模的标准语言,它融合了众多软件建模技术的优点,通过一系列标准的图形符号来描述系统。UML是一个通用的可视化建模语言,不同于编程语言,它通过一些标准的图形符号和文字对系统进行建模,用于对软件进行描述、可视化处理、构造和建立软件系统制品的文档。UML适用于各种软件开发方法、软件生命周期的各个阶段、各种应...原创 2019-03-07 22:01:48 · 156 阅读 · 0 评论 -
设计模式学习-观察者模式
观察者模式在软件系统中,各个对象并不是孤立存在的,经常会出现一个对象的状态发生了变化,会导致其他一个或者多个存在依赖关系的对象跟随变化的场景。观察者模式用来描述对象之间的依赖关系,为实现多个对象之间的联动提供了一种解决方案。定义观察者模式定义了一种一对多的依赖关系,每当一个对象的状态发生变化的时候,其他依赖对象都会得到通知并发生相应变化。结构观察者模式通常包含观察者和观察目标两个部分。...原创 2019-07-21 14:35:24 · 97 阅读 · 0 评论 -
设计模式学习-策略模式
策略模式策略模式一般用项目中算法功能的切换。对于解决某一个问题,假设存在一个算法族,如果希望某些时刻从其中选择一个合适的算法来实现功能,那么可以选择使用策略模式。策略模式将算法的表示功能和使用功能相分离,可以很方便的更换算法或者增加新的算法,符合开闭原则在实际应用中也比较常见。策略模式的UML类图和状态模式比较相似,但两者在使用上存在根本的区别。状态模式是根据传入的参数,被动的选择合适的算法执...原创 2019-07-26 00:14:23 · 100 阅读 · 0 评论 -
设计模式学习-模板方法模式
模板方法模式在我们的功能设计中,通常一些功能是由一系列步骤来完成的,这些步骤的次序基本一致,但是它们的实现可能完全不同。比如我们打算买一部手机,那么流程基本为浏览、下单、支付、收货四个步骤,浏览下单可以线上下下,支付可以现金、转账,收货可以立刻取货、邮寄等。可以看出,步骤是固定的,但是实现方法多样。那么为了提高代码的复用性和灵活性,我们可以使用模板方式来设计此类功能。模板方法模式是结构最简单的...原创 2019-07-26 01:06:06 · 99 阅读 · 0 评论 -
设计模式学习-访问者模式
访问者模式在处理某些容器类对象结构的时候,对象结构中存储了多种不同的对象信息,并且针对元素的处理方式并不唯一,可能需要提供多种不同的处理方式,也有可能增加新的处理方式。对于这种情景,可以考虑使用访问者模式。访问者是一种比较复杂的行为型设计模式,它包含了访问者和被访问元素部分。在使用访问者模式的时候,被访问元素通常不是单独存在的,他们存储在一个集合中,这个集合被称为“对象结构”,访问者通过遍历对...原创 2019-07-26 03:58:22 · 84 阅读 · 0 评论 -
设计模式学习-动态代理
代理模式定义给某一个对象提供一个代理,并由代理对象来控制对原对象的访问。结构Subject抽象主题角色。声明了真实主题和代理主题的共同接口,这样可以将代理主题取代真实主题,达到取代和控制的目的。Proxy代理主题角色。包含了对真实主题的引用,同时控制这着对真实主题的访问,具有附加操作、控制访问的功能。RealSubject真实主题。实现了抽象主题角色的接口,具有真正的业务功能。...原创 2019-04-14 18:52:56 · 128 阅读 · 0 评论 -
设计模式学习-享元模式
享元模式享元模式通过共享技术实现了对相同或者相似对象的重用,它通过提供一个享元池,为客户端的每次调用提供一个享元对象使用,在逻辑上的每一次调用都会有一个对象与之对应,然而在物理上它们却享有同一个地址值。享元对象能够做到共享的关键是区分了内部状态和外部状态。内部状态:存储在享元对象内部并且不会随着环境改变而改变的状态,内部状态始终可以共享。外部状态:随着环境改变而改变,不可以共享的状态。外部...原创 2019-04-14 11:27:45 · 138 阅读 · 0 评论 -
设计模式学习-命令模式
命令模式命令模式是常用的行为型设计模式之一,它在请求的发送者和接收者之间引入了新的命令对象,将请求的发送者和请求的接收者进行解耦,请求发送者通过命令对象简介引用请求接收者,使得系统具有更好的灵活性,可以在不修改现有系统源代码的情况下让相同的发送者对应不同的接收者。命令模式的本质时对命令进行封装,一个请求对应一个命令,将发出命令的责任和执行命令的责任进行分离,请求放发送者只要求执行发送操作,请求...原创 2019-04-25 21:34:12 · 100 阅读 · 0 评论 -
设计模式学习-单例模式
单例模式:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。单例模式是一种对象创建型模式。 单例模式要求:这个类只能有一个实例,并且由它自行创建,创建过程中保证线程安全。饿汉式-类被加载的时候立刻创建实例 public class SingletonThird { private static S...原创 2019-02-10 18:41:00 · 113 阅读 · 0 评论 -
设计模式学习-工厂模式
工厂模式部分内容主要包括简单工厂模式、工厂方法模式、抽象工厂模式。下面各个例子省略了main方法。简单工厂模式:定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。因为在简单工厂模式中用于创建实例的方法是静态(static)方法,因此简单工厂模式又被称为静态工厂方法(Static Factory Method)模式。简单工厂方法使用比较简单,...原创 2019-02-10 19:07:53 · 180 阅读 · 0 评论 -
设计模式学习-建造者模式
建造者模式:对象创建型模式,将一个复杂对象的构建与它的表示分离,使同样的构建过程可以有不同的表示。每个具体的建造者之间相互独立,添加和删除建造者不会对其他产生影响。建造者模式的结构分为:抽象建造者、具体建造者、产品、指挥者。使用建造者模式,调用复杂对象的时候不用关心它的生成过程。具体代码内容如下:package builder;public class Product { pri...原创 2019-02-24 21:58:04 · 119 阅读 · 0 评论 -
设计模式学习-原型模式
原型模式:使用原型实例指定待创建对象的类型,并通过这个原型进行自我复制创建一个相同类型的对象。通过原型模式创建的对象是一个全新的对象,它和原型对象具有相同的内容,但是在内存中的地址值不同,修改其中一个对象的属性,另一个对象不会发生变化。根据原型对象赋值的时候是否复制了其引用数据类型的成员变量,分为浅克隆和深克隆。浅克隆:如果原型对象的成员变量是值类型,那么将值传递给克隆对象,如果原型对象的成员...原创 2019-02-21 08:06:15 · 71 阅读 · 0 评论 -
设计模式学习-创建型模式总结
前面几天的学习中,学习了常见设计模式中的创建型模式,分为简单工厂模式、工厂方法模式、抽象工厂模式、原型模式、建造者模式、单例模式等。它们具有的共同优点是:创建型模式对于类的实例化过程进行了抽象,将对象的生成过程和对象的实现过程进行了分离,保证了的单一职责原则,调用方调用的时候,只需要知道获得对象的接口,并不要了解复杂的生成过程;同时由于只暴露了对外的接口,内部的实现细节修改起来也比较方便,符合开闭...原创 2019-03-02 13:30:39 · 368 阅读 · 0 评论 -
设计模式学习-适配器模式
适配器模式属于结构型模式的一种,其作用在于将两个接口不同的类进行适配,使目标类可以完整地调用被适配类的期望方法,属于设计模式种比较简单的一种。适配器模式:结构型模式关注如何将现有类或对象组织在一起形成更加强大的结构。其分类为类结构型模式和对象结构型模式,构成为Target(目标抽象类)、Adapter(适配器类)、Adaptee(适配者类),具体类图和典型代码如下:类结构型模式p...原创 2019-03-18 22:30:30 · 128 阅读 · 0 评论 -
设计模式学习-桥接模式
桥接模式桥接模式是一种比较常见的结构型设计模式,如果系统中的某个类存在两个独立变化的维度,通过桥接模式可以将这两个维度分离出来,使两者可以独立扩展。桥接模式是一个非常实用的设计模式,它体现了很多面向对象设计原则的思想,单一职责原则、接口隔离原则、合成复用原则、开闭原则、依赖倒转原则、里氏替换原则等。定义桥接模式将抽象部分与它的实现部分解耦,使两者都能够独立变化。它用抽象关联取代了传统的多层...原创 2019-03-31 10:30:30 · 217 阅读 · 0 评论 -
设计模式学习-组合模式
组合模式系统中通常有很多比较复杂的数据结构,如常见的目录、导航、菜单等结构,如果为每一个目录和标签写单独的方法,那么会非常麻烦,假设我们要删除一个文件夹,如果要人工的打开文件夹,判断里面的每个内容是文件夹或者文件,如果文件夹继续打开判断,如果是文件就删除。。。而实际中,我们只要右键-删除-确定就可以了,这个就是由组合模式来实现的。组合模式通过树形结构,将复杂的对象表示成容器和叶子,它模糊了简单...原创 2019-03-31 12:28:53 · 125 阅读 · 0 评论 -
设计模式学习-外观模式
外观模式外观模式是一种比较常见的设计模式,它通过引入外观类来对子系统的业务方法进行整合,减少了子系统与客户端的代码耦合。在完成一个完整业务功能需要多个业务类协调的情况下,如果没有外观类,那么每个调用这个功能的地方都要关联相关的业务类,关系过于复杂,并且不利于修改业务功能。引入了外观类之后,调用完整业务功能只需要与外观类打交道,降低了耦合度。定义为子系统中的一组接口提供一个统一的入口。外观模...原创 2019-04-10 22:23:28 · 95 阅读 · 0 评论 -
设计模式学习-装饰模式
装饰模式概述装饰模式是一种用来代替继承的技术,通过无需定义子类的方式给对象动态的添加职责,使对象之间的关联关系取代类之间的继承关系。装饰模式降低了代码中的耦合度,我们可以动态的增加或删除对象的职责,使得本质功能和装饰功能都可以独立变化,符合开闭原则。构成Component抽象构件。它是具体构件和装饰构件的共同父类,声明了客户端中使用及子类需要实现的方法。ConcreteComponen...原创 2019-04-07 15:18:05 · 164 阅读 · 0 评论 -
设计模式学习-职责链模式
职责链模式职责链可以是一条直线、一个环或者一个树形结构,最常见的职责链是直线型,即沿着一条单向的链传递请求。链上的每一个对象,都可以处理某种状态下的相同业务,客户端不用关心具体的处理内容,只要把被处理对象传递给链的第一个对象即可。定义避免将一个请求的发送者和接收者耦合在一起,让多个对象都有机会处理请求。将接受请求的对象连接成一个链,并且沿着这条链船队请求,直到有一个对象能够处理它为止。结构...原创 2019-04-16 22:09:17 · 93 阅读 · 0 评论 -
设计模式系统学习
设计模式学习过程中,参考了刘伟老师的技术博客(https://blog.csdn.net/LoveLion/article/category/738450/2?),在学习的过程中也加入了自己的理解,目前逐步更新,内容为设计模式的六大原则和二十四个java项目常用设计模式。(新的总结跳转地址) 模式是在特定环境下人们解决某类重复出现问题的一套成功或有效的解决方案...原创 2019-02-10 18:15:21 · 380 阅读 · 0 评论