![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 57
iteye_18000
这个作者很懒,什么都没留下…
展开
-
java 动态代理
PersonService 接口 public interface PersonService { @SuppressWarnings("unchecked") public abstract List getAllPerson(); } PersonSercieImpl public class PersonServiceImpl implements PersonS...原创 2010-06-26 22:44:31 · 68 阅读 · 0 评论 -
策略模式
策略模式用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得他们可以相互替换 一个系统需要动态地在几种算法中选择一种。那么这些算法可以包装到一个个的具体算法里面,而这些具体算法类都是一个抽象算法类的子类。就是这些具体算法类均有统一的接口,由于多态性原则,客户端可以选择使用任何一个具体算法类,并只持有一个数据类型是抽象算法类的对象 如果在一个系统里面有许多类,他们之间的区别仅...原创 2011-01-25 17:29:58 · 85 阅读 · 0 评论 -
模板方法模式
一个抽象类,将部分逻辑以具体方法以及构造子的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现 public abstract class Account { protected String accountNumber; public Account() { } ...原创 2011-01-26 09:33:46 · 80 阅读 · 0 评论 -
观察者模式
观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化,会通知所有观察者对象,使他们能自动更新自己 import java.util.Observable; public class House extends Observable { private int price = 1000000; public ...原创 2011-01-26 17:15:40 · 64 阅读 · 0 评论 -
迭代子模式
迭代子模式可以顺序地访问一个聚集中的元素而不必暴露聚集的内部表象,就是为不同的聚集提供相同的遍历方式,使得客户端只需要关注迭代接口,而不需要关注所迭代的聚集的具体结构 聚集和Java聚集多个对象聚在一起形成的总体称之为聚集(Aggregate),聚集对象是能够包容一组对象的容器对象。聚集依赖于聚集结构的抽象化,具有复杂性和多样性,数组就是最基本的聚集,也是其他Java聚集对象的设计基础。 Ja...原创 2011-01-27 19:18:08 · 92 阅读 · 0 评论 -
责任链模式
责任链模式里,很多对象由每一个对象对其下家的引用二连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,使得系统在不影响客户端的情况下动态地重新组织链和分配责任 纯与不纯的责任链模式 一个纯的责任链模式要求一个具体的处理者对象只能在两个行为中选择一个: 一个是承担责任,二是把责任推给下一家。不允许出现某...原创 2011-01-28 10:16:05 · 71 阅读 · 0 评论 -
命令模式
命令模式把一个请求或者操作封装到一个对象中。他把发出命令的责任和执行命令的责任分割开,委派给不同的对象 每一个命令都是一个操作:请求的一方发出请求要求执行一个操作;接收的一方收到请求,并执行操作。命令模式允许请求的一方和接收的一方独立开来,使得请求的一方不必知道接收请求的一方的接口,更不必知道请求是怎么被接收,以及操作是否被执行、何时被执行,以及是怎么被执行的 /** * 请求者角色...原创 2011-01-28 20:24:56 · 75 阅读 · 0 评论 -
备忘录设计模式
备忘录(Memento)模式又称标记(Token)模式。GOF给备忘录模式的定义为:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 /** * 发起人角色 */ public class Originator { private String state; /** * 工厂...原创 2011-02-14 14:57:29 · 76 阅读 · 0 评论 -
状态设计模式
状态模式允许一个对象在其内部状态改变的时候改变其行为。他把所研究的对象的行为包装在不同的状态对象里,每一个状态对象都属于一个抽象状态类的一个子类。状态模式的意图是让一个对象在其内部状态改变的时候,其行为也随之改变。 /** * 环境角色 */ public class Context { private State state; public void se...原创 2011-02-15 11:28:58 · 83 阅读 · 0 评论 -
访问者模式
访问者模式的目的是封装一些施加于某种数据结构元素之上的操作。一旦这些操作需要修改的话,接收这个操作的数据结构则可以保持不变。 访问者模式的组成结构: 1) 访问者角色(Visitor):为该对象结构中具体元素角色声明一个访问操作接口。该操作接口的名字和参数标识了发送访问请求给具体访问者的具体元素角色。这样访问者就可以通过该元素角色的特定接口直接访问它。 2) 具体访问者角色(Co...2011-02-16 11:14:19 · 70 阅读 · 0 评论 -
不变模式
一个对象的状态在对象创建之后就不再变化,这就是不变模式 不变模式有两种状态:一种是弱不变模式,另一种是强不变模式 弱不变模式:一个类的实例的状态是不可变化的,但是这个类的子类的实例具有可能变化的状态 第一,所考虑的对象没有任何方法会修改对象的状态 第二,所有的属性都应当是私有的 第三,这个对象所引用到的其他对象如果可变对象的话,必须设法限制外界对这些可变对象的访问,防止外界修改这些...原创 2011-01-25 15:05:15 · 77 阅读 · 0 评论 -
桥模式
将抽象化与实现化脱耦,使得二者可以独立变化。该模式的目标是通过把高层的抽象和底层的实现分开,分别构建自己的类层次结构,并通过实现部分的接口将两部分进行桥接,从而达到高层抽象和底层实现可以独立的方便扩展的目的。其核心是分离,和委托。 在以下的情况下应当使用桥梁模式: 如果一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的联系。 设计要求实现角色的...原创 2011-01-24 16:09:27 · 95 阅读 · 0 评论 -
门面模式
外部系统与一个子系统的通信必须通过一个统一的门面对象进行。门面模式的用意是为了为子系统提供一个集中化和简单化的沟通管道,而不能向子系统加入新的行为。 /** * 子系统角色 */ public class Camera { public void turnOn(){ System.out.println("turning on the camera...原创 2011-01-22 11:15:04 · 81 阅读 · 0 评论 -
转:Singleton(单态)模式 和 Double-Checked Locking(双重检查锁定)模式
确保一个特定的类只有一个对象被实例化。Singleton:用于单线程应用程序Double-Checked Locking在java实际上无法得到预期的效果,不能保证singleton的正确性。参考:(英文)http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html 饿汉式 public clas...原创 2010-12-25 16:03:17 · 125 阅读 · 0 评论 -
抽象工厂设计模式
/** * 园丁 */ public interface Gardener { } /** * 北方园丁 */ public class NorthernGardener implements Gardener { public Fruit createFruit(String name) { return new Nor...原创 2010-12-27 12:17:08 · 72 阅读 · 0 评论 -
建造设计模式
Director /** * 导演者 */ public class Director { private Builder builder; /** * 产品构造方法,负责调用各个零件的建造方法 */ public void construct(){ builder = new Conc...原创 2010-12-28 16:02:19 · 60 阅读 · 0 评论 -
原始模型模式
通过一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象。 public interface Prototype extends Cloneable { public Object clone(); } public class ConcreatePrototype implements Prototype { ...2011-01-15 11:31:20 · 96 阅读 · 0 评论 -
对象适配器(object adapter)
把一个类的接口变成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作 /** * 目标角色 */ public interface Target { public void operation1(); public void operation2(); } /** * 原角色 */ public clas...原创 2011-01-15 15:11:35 · 417 阅读 · 0 评论 -
缺省适配器
缺省适配器为一个接口提供缺省实现,这样子类可以从这个缺省的实现进行扩展,而不必从原有的接口进行扩展 public interface 和尚 { public void 吃斋(); public void 念经(); public void 打坐(); public void 习武(); public String getName(); ...原创 2011-01-15 15:50:44 · 236 阅读 · 0 评论 -
单纯享元模式
享元模式以共享的方式高效的支持大量的细粒度对象 享元对象能做到共享的关键是区分内蕴状态(Internal State)和外蕴状态(External State) 一个内蕴状态是存储在享元对象内部的,并且是不会随着环境改变而有所不同 一个外蕴状态是随环境改变而改变的、不可以共享的状态。享元对象的外蕴状态必须由客户端保存,并在享元对象被创建之后,在需要使用的时候再传入享元对象内部 外蕴状态不可...2011-01-15 18:18:56 · 145 阅读 · 0 评论 -
转:安全合成模式
合成模式把部分和整体的关系用树结构表示出来。使客户端把一个个单独的成分对象和由它们复合而成的合成对象同等看待。 public interface IFile { //返回自己的实例 IFile getComposite(); //某个商业方法 void sampleOperation(); //获取深度 in...原创 2011-01-22 10:32:55 · 101 阅读 · 0 评论 -
装饰器模式
public interface ISource { public void operation(); } public class Source implements ISource { public void operation() { System.out.println("原始类方法"); } } pub...原创 2011-01-22 10:40:12 · 79 阅读 · 0 评论 -
调停者模式
看了很久感觉理解不太好! 调停者模式包装了一系列对象的相互作用的方式,使得这些对象不必互相明显的引用。从而他们可以较松散地耦合。当这些对象中的某些对象之间的相互作用发生变化时,不会立即影响到其他的一些对象之间的相互作用。从而保证这些相互作用可以彼此独立地变化 。 在调停者模式中,所有的成员对象都可以协调工作,但是又不直接相互管理。这些对象都与一个处于中心地位的调停者对象发生紧...2011-02-17 11:42:49 · 131 阅读 · 0 评论