
java设计模式汇总
黄泽平
深耕前端,努力前进!
展开
-
Java设计模式(4)创建型:生成器模式
生成器模式,又叫建造者模式,指将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。当系统准备为用户提供一个内部结构复杂的对象,并且在构造方法中编写创建该对象的代码无法满足用户需求时,就可以使用生成器模式来构造这样的对象。原创 2016-12-20 15:55:03 · 587 阅读 · 0 评论 -
Java设计模式(13)行为型:策略模式
策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。策略模式的重心不是如何实现算法,而是如何组织、调用这些算法,从而让程序结构更灵活,具有更好的维护性和扩展性。策略模式一个很大的特点就是各个策略算法的平等性。对于一系列具体的策略算法,大家的地位是完全一样的,正因为这个平等性,才能实现算法之间可以相互替换。所有的策略算法在实现上也原创 2016-12-27 15:47:34 · 390 阅读 · 0 评论 -
Java设计模式(14)行为型:模板方法模式
模板方法模式是指定义一个操作中算法的骨架,而将一些步骤延迟到子类中。设计者需要给出一个算法的固定步骤,并将某些步骤的具体实现留给子类来实现。具体模板实现算法细节不会改变整个算法的骨架,但注意要将各个子类公共行为提取出来集中到一个共同的父类中以避免代码重复。AbstractTemplate类,定义逻辑顺序并将实现过程定义为抽象方法。public abstract class Ab原创 2016-12-27 17:14:50 · 390 阅读 · 0 评论 -
Java设计模式(15)行为型:观察者模式
观察者模式(有时又被称为发布(publish )-订阅(Subscribe)模式、模型-视图(View)模式、源-收听者(Listener)模式或从属者模式)是软件设计模式的一种。在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实现事件处理系统。观察者模式(Observer)完美的将观察者原创 2016-12-27 17:40:18 · 395 阅读 · 0 评论 -
Java设计模式(16)行为型:迭代器模式
迭代器模式提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。访问一个聚合对象的内容而无需暴露它的内部表示支持对聚合对象的多种遍历,为遍历不同的聚合结构提供一个统一的接口。迭代器模式可以直接使用原生JDK中提供的方法:java.util.Iterator;,如:import java原创 2016-12-27 18:24:28 · 396 阅读 · 0 评论 -
Java设计模式(17)行为型:责任链模式
在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。通常来说,一个纯粹的责任链是先传给第一个处理,如果处理过了,这个请求处理就此结束,如果没有处理,再传给下一个处理者。这样使很多个对象都有机会处理原创 2016-12-28 10:34:28 · 428 阅读 · 0 评论 -
Java设计模式(1)概述:类别与原则
Java设计模式(一)设计原则原创 2016-12-19 15:29:58 · 642 阅读 · 0 评论 -
Java设计模式(2)创建型:工厂模式(工厂方法模式与抽象工厂模式)
工厂模式属于创建型设计模式,包括工厂方法模式和抽象工厂模式。凡是出现了大量的产品需要创建,并且具有共同的接口时,都可以通过工厂模式进行创建。(一)工厂方法模式工厂方法模式通过演变发展,有3种编码写法,以发送邮件和SMS信息业务逻辑为例,由简到难介绍:1)第一种编码写法,也常被称为简单工厂模式,表现方式是通过传参来确认工厂的创建对象。ISender发送器接口:public int原创 2016-12-19 18:21:36 · 561 阅读 · 0 评论 -
Java设计模式(3)创建型:单例模式
单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。单例模式是设计模式中最简单的形式之一。这一模式的目的是使得类的一个对象成为系统中的唯一实例。要实现这一点,可以从客户端对其进行实例化开始。因此需要用一种只允许生成对象类的唯一实例的机制,“阻止”所有想要生成对象的访问。对于系统中的某些类来说,只有一个实例很重要,例如,一个系原创 2016-12-19 18:48:43 · 427 阅读 · 0 评论 -
Java设计模式(26)总结:行为型设计模式
(一)概述行为型设计模式涉及到算法和对象间职责的分配。该模式不仅描述对象或类的模式,还描述它们之间的通信模式。这些模式刻划了在运行时难以跟踪的复杂的控制流。它们将你的注意力从控制流转义到对象间的联系方式上来。行为型设计模式包括11种:策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式和解释器模式。(二)区别原创 2017-01-09 17:47:27 · 801 阅读 · 0 评论 -
Java设计模式(6)结构型:适配器模式
适配器模式是指将一个不兼容的类的接口适配成用户所期待的接口。该模式的宗旨是保留现有类所提供的服务,向客户提供接口,以满足客户的期望。在实际应用中,往往会根据用户的需求来确定使用适配器模式是为用户提供适配的新接口还是在原有接口中修改实现适配(本文例子中均以扩展新接口为例列举)。适配器模式有两种实现方式:1)类适配器模式。指继承原有实体类并实现扩展接口。2)对象适配器模式。仅通过接口实现,重写原创 2016-12-21 17:12:36 · 487 阅读 · 0 评论 -
Java设计模式(25)总结:结构型设计模式
(一)概述结构型设计模式旨在从程序的结构上解决模块与模块间的耦合。它们包括适配器模式、装饰模式、代理模式、外观模式、桥接模式、组合模式和享元模式。(二)区别1)配置器模式、装饰模式、代理模式与外观模式的比较这四种模式代码编写结构几乎是一模一样,都是一个对象通过引用另一个对象实现对功能接口的封装,从而实现业务接口的加密、兼容或扩展,其中配置器模式、装饰模式、代理模式封装对象都原创 2017-01-07 14:21:01 · 514 阅读 · 0 评论 -
Java设计模式(24)总结:创建型设计模式
本篇主要想总结一下5种创建型设计模式,比较一下它们之前的相同点和不同点以及实际使用需求。(一)概述创建型设计模式是3种大类设计模式中最好理解也是相对简单的设计模式,它们包括工厂方法模式、抽象工厂模式、单例模式、生成器模式和原型模式。 (二)区别1)工厂方法模式与抽象工厂模式:两种工厂模式实现的原理差不多,当需要大量创建同一类别的对象时,都可以使用这两种模式。区别在于工厂方法...原创 2017-01-05 18:04:06 · 395 阅读 · 0 评论 -
Java设计模式(19)行为型:备忘录模式
(一)模式概念备忘录模式是指在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。备忘录模式又叫做快照模式(Snapshot Pattern)或Token模式,是对象的行为模式。 备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。(二)模式结构1)Originator(发起人):负责创建一个备忘录Memento,原创 2016-12-28 16:41:52 · 423 阅读 · 0 评论 -
Java设计模式(18)行为型:命令模式
(一)模式概念在软件系统中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合,比如要对行为进行“记录、撤销/重做、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将“行为请求者”与“行为实现者”解耦?将一组行为抽象为对象,实现二者之间的松耦合。这就是命令模式(Command Pattern)。命令模式的目的就是达到命令的发出者和执行者之间解耦,实现请求原创 2016-12-28 14:15:40 · 433 阅读 · 0 评论 -
Java设计模式(20)行为型:状态模式
(一)模式概念状态模式是指一个对象在其内部状态改变时改变它的行为。状态模式主要解决的是当控制一个对象状态的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化。(二)模式结构1)状态接口定义一个接口,负责约定状态执行的方法和变量。2)状态实现者负责具体的状态接口实现,一般为枚举类型。3)状态管理者负责状态条件的判断原创 2016-12-29 11:05:17 · 445 阅读 · 0 评论 -
Java设计模式(8)结构型:代理模式
代理模式为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。代理模式可以屏蔽用户真正请求的对象,是用户程序和正在的对象解耦。 使用代理来担当那些创建耗时的对象的替身。代理模式由3种角色组成,分别是:1)抽象角色:通过接口或抽象类声明真实角色实现的业务方法。2)代理角色:实现抽象角色,是真实原创 2016-12-23 17:48:45 · 445 阅读 · 0 评论 -
Java设计模式(9)结构型:外观模式
外观模式是指为定义一个高层接口,这个接口使得这一子系统更加容易使用。换句话说就是客户对象通过一个接口读写子系统中各接口的数据资源,降低了类类之间的耦合度。以计算机开机和关机为例,如计算机开机会先启动CPU,继而启动缓存和硬盘,CPU、缓存和硬盘之间的启动有先后交互关系。这时可以使用装饰模式,定义一个高层接口,来解耦3个组件之间的关系。CPU实体类:public class CP原创 2016-12-23 18:28:57 · 431 阅读 · 0 评论 -
Java设计模式(10)结构型:桥接模式
桥接模式是指将抽象化与实现化解耦,使得二者可以各自独立变化,增加新的具体实现者,不需要修改细化抽象,反之增加新的细化抽象也不需要修改具体实现。该模式的主要需求在于满足某些类有两个或多个维度的变化时使用。(注)如连接数据库JDBC桥,就是通过桥接模式实现。原创 2016-12-26 17:52:21 · 395 阅读 · 0 评论 -
Java设计模式(11)结构型:组合模式
组合模式是指将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。掌握组合模式的重点是要理解清楚 “部分/整体” 还有 ”单个对象“ 与 "组合对象" 的含义。经典案例:系统目录结构,网站导航结构等。经典案例:系统目录结构,网站导航结构等。组合模式有时候又叫做部分-整体模式,它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念 ,客户程序原创 2016-12-26 18:22:48 · 321 阅读 · 0 评论 -
Java设计模式(21)行为型:访问者模式
(一)模式概念访问者模式表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。访问者模式适用于数据结构相对稳定算法又易变化的系统,若系统数据结构对象易于变化,则不适合使用访问者模式。访问者模式的优点是增加操作很容易,因为增加操作意味着增加新的访问者。(二)模式结构1)Visitor 抽象访问者角色:为该对象结构中具体元素角色声明一个原创 2016-12-29 16:49:34 · 374 阅读 · 0 评论 -
Java设计模式(22)行为型:中介者模式
(一)模式概念中介者模式是指用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互。该模式只需关心和Mediator类的关系,具体类类之间的关系及调度交给中介者就行。(二)模式结构1)抽象中介者:定义好同事类对象到中介者对象的接口,用于各个同事类之间的通信。一般包括一个或几个抽象的事件方法,并由子类去实现。2)原创 2016-12-29 18:45:45 · 460 阅读 · 0 评论 -
Java设计模式(23)行为型:解释器模式
(一)模式概念解释器模式是指定义语言的文法,并且建立一个解释器来解释该语言中的句子。它属于类的行为模式。这里的语言意思是使用规定格式和语法的代码。如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子。这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题。而且当文法简单、效率不是关键问题的时候效果最好。说白了,就是能解释上下文时通过代码即可原创 2016-12-29 19:05:39 · 453 阅读 · 0 评论 -
Java设计模式(5)创建型:原型模式
原型模式是指用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节。工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。它主要面对的问题是:某些结构复杂的对象”的创建工作;由于需求的变化,这些对象经常面临着剧烈的变化,但是他们却拥有比原创 2016-12-20 17:29:49 · 370 阅读 · 0 评论