设计模式
JamesZhao1987
这个作者很懒,什么都没留下…
展开
-
多线程设计模式(Thread-Specific storage)
引用自http://www.riabook.cn/doc/designpattern/ThreadSpecificStorage.htm 无论如何,要编写一个多执行绪安全(thread-safe)的程式总是困难的,为了使用的共用资源,您必须小心的对共用资源进行同步,同步带来一定的效能延迟,而另一方面,在处理同步的时候,又要注意物件的锁定与释放,避免产生死结,种种因素都使得编写多执行绪程式变得困难...原创 2011-12-12 15:29:04 · 128 阅读 · 0 评论 -
工厂设计模式和单例子的设计模式
一、工厂模式 1.简单工厂模式 也叫静态工厂模式,一般是产品的继承类或是接口的实现,如司机开多个车子的例子。 //接口 public Interface Car{ public void driver(); } //定义接口的实现类 public class QQCar implements Car{ public void driver(){ sysout("...原创 2011-11-06 20:21:55 · 88 阅读 · 0 评论 -
设计模式之门面模式
门面模式又叫外观模式。 为子系统的一组接口提供一个一致的门面,定义了更高层的接口,使子系统更方便使用。 所有客户端直接与门面类进行交互,这样就减少了客户端与子系统之间的耦合。 组成:门面角色,被客户端调用,它熟悉子系统的功能,根据客户的需求提供了一些供客户端使用的功能组合。 子系统角色:实现了子系统的功能,对它而言不知道facade的存在。 客户端角色:调用facad...原创 2011-11-09 15:30:41 · 87 阅读 · 0 评论 -
设计模式之模版方法
模版方法是一种非常简单的设计模式:简单的理解就是将关键的业务方法,逻辑,算法封装起来。把具体的一些容易变化的步骤留给子类实现,具体表现就是实现父类的方法。 实现过程:把我们不知道的具体实现步骤封装成抽象方法,提供一些按照正确顺序调用他们的具体方法,这些具体方法叫做模版方法。这样就构成了一个抽象基类。子类 通过继承这个基类去实现抽象方法,而工作流由父类控制。 注释:父类(抽象类)中需要定义的有...原创 2011-11-09 16:31:26 · 71 阅读 · 0 评论 -
设计模式之适配器模式
适配器模式:主要是为了解决,老的对象在新的环境中不兼容的现象。 如新的要求、新的接口已经决定下来,老对象中已经有实现新需求的方法,如是就可以考虑使用适配器模式了 将一个类的接口,转换成客户希望的另外一个接口。使得原本由于接口不兼容而不能一起工作的那些类可以一起工作了。 组成部分: target(目标对象,客户端要用的特定领域的接口)、adapter(适配器,定义另外一个接口,即一个转换器)...原创 2011-11-09 18:24:03 · 79 阅读 · 0 评论 -
建造模式
建造模式是将负责对象的构建与它的表示分离开来,从而可以达到同样的创建过程可以创建不同的表示。简单的讲就是将构造过程与组装的过程进行解耦。 注:构造过程是一样的,但是由于传入零件不同组装的产品也就不一样。 如构造的步骤定义在抽象的构造者中,具体构造者1生产出了各自汽车的零件,然后按照抽象构造者的步骤构造出了汽车。而构造者2生产出了火车的零件。然后按照抽象构造者生产出了火车。 这样导演者调用构造...原创 2011-11-14 12:03:04 · 64 阅读 · 0 评论 -
命令模式
今天想学学命令模式,看见了一个文章讲的就是命令模式,感觉实例比较简单直观就转载过来与大家分享。 文章如下: 案例:设计一个家电自动化的API,这个遥控器具有几个可编程的插槽,每一个插槽都有对应的开关按钮,还有一些java类,这些类由多家厂商提供,控制家电自动化装置, 例如:电灯,风扇等。好了,此时就要创建一个控制遥控器的API出来,让每一个插槽都能够控制一个装置。 每个类都有on...原创 2011-11-16 14:11:44 · 90 阅读 · 0 评论 -
观察者模式
声明转载的,简单易懂,呵呵 观察者模式的构造 l 抽象主题(Subject)角色:主题角色把所有对视察者对象的援用保留在一个凑集(List)中,每个主题都能够有任何数目的观察者。抽象主题供给一个接口,可以增添跟删除察看者对象,主题角色又叫做形象被观察着角色,个别用一个抽象类或者一个接口实现 l 抽象观察者(Observer)角色:为所有具体观察者定义一个接口,在得到主题...原创 2011-11-16 14:48:50 · 71 阅读 · 0 评论 -
代理模式
代理模式实际上是对对象的一种代理,以控制对象的访问。 有些情况下,一个对象不想直接被另一对象直接使用,可以考虑使用代理模式,代理模式起到了一个中介的作用。 代理模式最重要的作用是可以控制对象访问的同时提供额外的处理。 以下应用自: http://baike.baidu.com/view/2646301.htm 应用场景 例如:假设有一组对象都实现同一个接口,实现同样的方法,但这组对...原创 2011-11-30 15:26:19 · 94 阅读 · 0 评论 -
AbstractList中Iterator模式的妙用
AbstractList中为了实现顺序访问AbstractList中的元素,而又隐含AbstractList内部结构使用了Iterator的模式。 实现如下: 首先AbstractList类提供了 public Iterator iterator() { return new Itr(); }访问方法。 然后Iterator的实现类是用一个内部类实现。 private class...原创 2012-01-13 11:51:11 · 158 阅读 · 0 评论 -
适合使用命令模式的情景
情景1.当借个类都拥有一个相似的方法时,可以考虑为这些类定义一个接口,然后就可以考虑使用命令模式,将这接口注入到一个命令中,在命令中进行调用注入对象的这个方法。如果含有多个命令,可以将命令抽象出来一个接口,然后再注入到一个调用者中,这样就可以根据不同请求传入一个不容的命令给调用者,然后调用调用者的统一方法就可以了。 以下引用自: http://chjavach.iteye.com/blog/7...原创 2012-01-13 11:31:04 · 444 阅读 · 0 评论 -
桥梁设计模式
如果有很多对象要处理,而又有很多操作要做。这时可以考虑使用桥梁的设计模式,将对象与操作相互分离,都做抽象,然后分别由实现类进行组合。完成所需要的要求。 下面的实例引用自 http://wenku.baidu.com/view/2911fc4f2e3f5727a5e9622e.html 现在我们有很多表要处理,同时又有很多操作要做。最简单的做法是在一个类里做完所有的操作,如我们在EJB服务器端...原创 2011-12-19 18:19:27 · 167 阅读 · 0 评论 -
责任链模式
此文转正于http://wenku.baidu.com/view/8a3b062e2af90242a895e53c.html 一、引言 看牙。说的是一个病人看牙的时候,医生不小心把拔下的一个牙掉进了病人嗓子里。病人因此楼上楼下的跑了好多科室,最后无果而终。 责任链模式就是这种“推卸”责任的模式,你的问题在我这里能解决我就解决,不行就把你推给另一个对象。至于到底谁解决了这个问题了呢?我...原创 2011-12-20 18:35:21 · 75 阅读 · 0 评论 -
合成设计模式
如果要将对象组织到树中,使用树来表示对象之间的关系,请考虑使用合成的设计模式。如组织结构,分类分层等等。 既然是要表示成树自然就要定一个树节点的抽象接口,每个元素需要实现该接口。 抽象接口的组成元素,通常抽象接口中包括返回当前节点的方法,获取深度和设置深度的方法。一个提供一个操作逻辑的方法。 实现类在实现抽象接口中的方法基础之上在添加自己所需要的方法。 当然最后遍历的时候需要使用树的递归遍...原创 2011-12-22 16:28:12 · 123 阅读 · 0 评论 -
策略模式
所谓策略模式就是定义了多种算法,而让不同算法之间的切换不会影响到客户端。 策略模式主要涉及3个组成部分 (1) 环境对象:该类中实现了对抽象策略中定义的接口或者抽象类的引用。 (2) 抽象策略对象:它可由接口或抽象类来实现。 (3) 具体策略对象:它封装了实现同不功能的不同算法。 因此很好理解就是定义一个抽象的接口,该接口包含了一个之类公共的方法,然后...原创 2011-12-22 17:07:26 · 92 阅读 · 0 评论 -
享元模式
通常情况下,我们会需要使用某个对象的时候会直接new,然后使用完后就等着垃圾回收器回收,但是如果访问量比较大new的对象比较多,那么很有可能会造成内存数据过大甚至是溢出的情况。享元模式最主要的目的就是解决减少大量创建新的对象,让多个对象引用公用缓存中的同一个对象。有点类始于连接池,当你需要的时候返回一个你所需的对象一样。 享元模式一共包含2个重要概念,一个是内蕴状态和外蕴状态。两种状态的充当者你...原创 2011-12-23 10:22:30 · 88 阅读 · 0 评论 -
使用工厂设计模式的场景
创建类对象虽然可以使用new(底层也是通过反射创建对象的),但是在一些情况下使用工厂模式确实最合适的。 情况一:如果一个对象拥有很多子类,那么创建该对象的子类使用工厂模式是最合适的,不但可以面向接口的编程,为维护以及开发带来方便。 情况二:如果创建某个对象时需要进行许多额外的操作,如查询数据库然后将查询到的值赋予要创建的对象(单例初始化时使用比较多),或是需要许多额外的赋值等等。如果查看JDK...原创 2012-01-12 15:43:53 · 280 阅读 · 0 评论 -
JDK中使用的设计模式
1.抽象工厂模式 实例1: public static Calendar getInstance() { Calendar cal = createCalendar(TimeZone.getDefaultRef(),Locale.getDefault()); cal.sharedZone = true; return cal; } ...原创 2012-01-13 10:04:36 · 90 阅读 · 0 评论 -
Iterator模式
我个人常叫它游标模式,该模式的主要目的就是,顺序访问集合中的各个对象,而又不暴露该对象的内部表示。 使用场景:针对一个集合或是封装了集合的对象,对外界需要提供一个访问该集合或是该集合封装对象的保存的元素时,同时又不希望暴露该集合的内部结构。并且希望支撑根据不同的需求对集合元素进行不同的遍历。 主要的思想就是将集合与集合的遍历操作进行分离。即集合元素负责添加对象和删除对象等等。而遍历操作交给另一...原创 2012-01-13 10:57:51 · 98 阅读 · 0 评论 -
简单工厂模式使用心得(使用场景)
在实际项目中,简单工厂模式是我们使用的最多的设计模式之一,简单工厂模式在应对需求变更的过程中也起到了很大的作用。 使用情景: 再不确定会有多少个处理操作时应该考虑使用简单工厂模式,如针对同样的接收到的数据,处理的逻辑可能会不同,可能以后还会增加新的操作。 案例: 例如如果实现计算器的功能时,对于同样的输入数据,可能执行加、减、乘、除,甚至其他的功能。因此可以抽象出一个操作的...原创 2012-02-23 18:24:44 · 1378 阅读 · 0 评论