Java设计模式
YJian2008
这个作者很懒,什么都没留下…
展开
-
Java状态模式(State)
一、概述 (1)定义:状态模式把所研究的对象的行为包装在不同的状态对象里,每一个状态对象都属于一个抽象状态类的一个子类,这个对象看上去象是改变了它的类一样。状态模式需要对每一个系统可能取得的状态创立一个状态类的子类。当系统的状态变化时,系统便改变所选的子类。 (2)意图:让一个对象在其内部状态改变的时候,其行为也随之改变。 (3)适用场景:1)一个对象的行为取决转载 2013-12-07 09:38:51 · 1471 阅读 · 0 评论 -
Java解释器模式(Interpreter)
一、概述 定义语言的文法,并且建立一个解释器来解释该语言中的句子。如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子,这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题,而且当文法简单,效率不是关键问题的时候效果最好。二、结构图 抽象解释器:声明一个所有具体表达式都要实现的抽象接口(或者抽象类),接转载 2013-12-10 16:51:05 · 1081 阅读 · 0 评论 -
Java命令模式(Command)
一、概述 定义:将一个请求封装成一个对象,从而可以使用不同的请求对客户端进行参数化;对请求排队或记录请求日志,并且可以提供命令的撤销和恢复功能。将“行为请求者”和“行为实现者”解耦,可实现二者之间的松耦合。 队列请求:就是对命令对象进行排队,组成工作队列,然后依次取出命令对象来执行。可以使用多线程或者线程池来进行命令队列的处理,但是也可以使用一个线程,一次从队列中取出命原创 2013-12-10 15:40:39 · 1313 阅读 · 0 评论 -
Java装饰器模式(Decorator)
一、概述 装饰模式又名包装(Wrapper)模式。装饰模式以对客户端透明的方式扩展对象的功能,可以在不创建更多子类的情况下,将对象的功能加以扩展,是继承关系的一个替代方案。用意:动态地为对象添加一些额外的功能,就好比为房子进行装修一样。 特点:1)装饰者和被装饰者拥有相同的超类型(可能是抽象类也可能是接口);2)在装饰类中包含一个被装饰组件类的对象引用;3)可以为被装饰原创 2013-12-11 18:48:10 · 1698 阅读 · 0 评论 -
Java迭代器模式(Iterator)
一、概述 迭代器(Iterator)模式,又叫做游标(Cursor)模式。GOF给出的定义为:提供一种方法访问一个容器对象中各个元素,而又不需暴露该对象的内部细节。 该模式在客户与容器之间加入了迭代器角色,这样就可以很好的避免容器内部细节的暴露,而且也使得设计符号“单一职责原则”。在迭代器模式中,具体迭代器角色和具体容器角色是耦合在一起的——遍历算法是与容器的内部细节紧原创 2013-12-13 15:54:12 · 776 阅读 · 0 评论 -
Java访问者模式(Visitor)
一、概述 访问者模式是对象的行为模式。访问者模式的目的是封装一些施加于某种数据结构元素之上的操作。一旦这些操作需要修改的话,接受这个操作的数据结构则可以保持不变。 实现的基本思路:在对象结构上添加一个方法,作为通用的方法,也就是可以代表要添加的功能,在这个方法中传入具体的实现新功能的对象。在对象实现的具体实现对象中实现这个方法,回调传入具体的实现新功能的对象,就相当于转载 2013-12-14 11:09:07 · 1000 阅读 · 0 评论 -
Java单例模式(Singleton)
单例模式有一下特点: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。 单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。这些应用都或多或少具有资源管理器的功能。每台计算机可以有若干个打印机,但只能有一原创 2013-12-02 22:09:01 · 707 阅读 · 0 评论 -
Java原型设计模式(Prototype)
1、定义 原型模式(Prototype)就是通过复制一个已经存在的实例来返回新的实例,而不是新建实例,被复制的实例就是我们所称的原型对象,这个原型是可定制的。2、原理 有两部分组成,抽象原型和具体原型。意图:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。3、原型模式UML图4、实现 1>使用一个原型管理器;转载 2013-12-03 21:43:11 · 935 阅读 · 0 评论 -
Java享元模式(Flyweight)
一、享元模式(Flyweight): 意图:运用共享技术有效地支持大量细粒度的对象。享元模式可以使你共享地访问那些大量出现的细粒度对象,享元对象必须是不可变的,可以将那些不变的部分提取出来。 享元模式的重点在于分离变与不变。本质是分离与共享。把一个对象的状态分成内部状态和外部状态,内部状态是不变的,外部状态是可变的。然后通过共享不变的部分,达到减少对象数量并节约内存的目的原创 2013-11-29 21:02:47 · 711 阅读 · 1 评论 -
Java抽象工厂模式(Abstract Factory)
一、定义 多个抽象产品类,派生出多个具体产品类;一个抽象工厂类,派生出多个具体工厂类;每个具体工厂类可创建多个具体产品类的实例。即提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们的具体的类。假设一个子系统需要一些产品对象,而这些产品又属于一个以上的产品等级结构。那么为了将消费这些产品对象的责任和创建这些产品对象的责任分割开来,可以引进抽象工厂模式。这样的话,消费产品的一方原创 2013-12-03 20:57:36 · 1236 阅读 · 0 评论 -
Java调停者模式(Mediator)
1.定义 调停者模式定义一个对象(Mediator),封装一系列对象(Colleagues)相互作用的方式,使得这些对象(Colleagues)不必相互明显作用。从而使他们可以松散偶合,避免了对象之间的显示引用,并且可以独立地改变对象的行为。当某些对象之间的作用发生改变时,不会立即影响其他的一些对象之间的作用。调停者模式将多对多的相互作用转化为一对多的相互作用。调停者模式将对象的行转载 2013-11-27 19:10:24 · 802 阅读 · 0 评论 -
Java策略模式(Strategy)
一、概述 策略模式定义一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换,而且使这些算法在客户端调用它们的时候能够互不影响地变化。策略模式属于对象行为型模式,它们之间是弱连接的关系,提高了软件的可扩展性与可重用性。策略模式适用于当一个应用程序需要实现一种特定的服务或者功能,而且该程序有多种实现方式时使用。 策略模式的重心不是如何实现算法,而是如何转载 2013-12-07 20:15:30 · 1373 阅读 · 0 评论 -
Java模板方法模式(Template Method)
一、概念 定义一个算法的骨架,将部分逻辑以具体方法的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方法实现这些抽象方法,从而对剩余的逻辑有不同的实现。意图:在一个方法中实现一个算法,并推迟定义算法中的某些步骤,从而让子类重新定义它们。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。 抽象类的任务是搭建逻辑的框架,转载 2013-12-06 16:21:36 · 849 阅读 · 0 评论 -
Java工厂方法模式(Factory Method)
一、定义 首先,在工厂方法模式中,核心的工厂类不再负责所有的产品的创建,而是将具体创建的工作交给子类去做,仅负责给出具体工厂子类必须实现的接口,而不接触哪一个产品类应当被实例化这种细节。这种进一步抽象化的结果,使这种工厂方法模式可以用来允许系统在不修改具体工厂角色的情况下引进新的产品,这一特点无疑使得工厂模式具有超过简单工厂模式的优越性。二、结构图及各部分的功能原创 2013-12-03 19:22:54 · 736 阅读 · 0 评论 -
Java责任链模式(Chain of Responsibility)
一、定义: 在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。二、责任链模式的结构 责任链模式涉及到的角色如下所示: (1)抽象处理者(H原创 2013-11-29 19:43:59 · 2183 阅读 · 0 评论 -
Java观察者模式(Observer)
Observer模式的意图是“定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新”。从这段话里我们可以得到两个信息,如下: 1, 观察者(具体执行操作的对象,有多个); 2, 被观察者(顾名思义是被观察的对象,如果该对象发生某些变化则通知观察者执行对应的操)转载 2013-11-25 17:06:22 · 1415 阅读 · 1 评论 -
Java备忘录模式(Memento)
一、定义 备忘录模式(Memento)的作用是保存对象的内部状态,并在需要的时候(undo/rollback)恢复对象以前的状态。在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样就可以在需要的时候将该对象恢复到原先保存的状态。二、结构图 涉及的角色:发起人(Originator)角色、备忘录(Memento)角色、负责人(C转载 2013-12-04 19:19:47 · 738 阅读 · 0 评论 -
Java代理模式(Proxy)
一、作用: 为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。使用代理模式创建代理对象,让代理对象控制目标对象的访问(目标对象可以是远程的对象、创建开销大的对象或需要安全控制的对象),并且可以在不改变目标对象的情况下添加一些额外的功能。二、结构图三、在代理模式中的转载 2013-11-27 20:48:53 · 944 阅读 · 0 评论 -
Java构建者模式(Builder)
一、定义: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。意图是:将类的构建逻辑转移到类的实例化外部。Builder模式是分步骤地创建一个复杂的对象,关注的是目标类的构建过程,目标类关注合法实例的业务本身。它将复杂的内部创建封装在内部,它允许用户可以只通过指定复杂对象的类型和内容就可以构建它们,用户不知道内部的具体构建细节。这样做的好处是在实例化目标类前,原创 2013-11-30 17:44:07 · 2869 阅读 · 0 评论 -
Java设计模式总结
1、工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户端提供。 2、建造模式:将产品的内部表象和产品的生成过程分割开来,从而使一个建造过程生成具有不同的内部表象的产品对象。建造模式使得产品内部表象可以独立的变化,客户不必知道产品内部组成的细节。建造模式可以转载 2013-11-27 17:19:04 · 530 阅读 · 0 评论