君子博学而日参省乎己 则知明而行无过矣

博客园 首页 新随笔 联系 订阅 管理

2013年9月15日 #

摘要: 目录(?)[-]Future PatternTwo-Phase Termination PatternThread-Specific Storage PatternActive Object PatternFuture Pattern 在Thread-Per-Message Pattern中,我们研究过“收到每个请求建立一个线程”的做法,但这样的请求是不要求有返回值的。如果当需要返回值,但由于后台处理需要很久,返回值 不能马上获取,那么就可以使用 Future Pattern。Future Pattern同样会每个请求建立一个线程处理,同时会马上返回一个对象,但该对象并不是真正的返回值,真.. 阅读全文
posted @ 2013-09-15 01:16 刺猬的温驯 阅读(512) 评论(0) 推荐(1) 编辑

摘要: 目录(?)[-]Read-Wirte Lock PatternThread-Per-Message PatternWorker Thread PatternRead-Wirte Lock Pattern Read-Write Lock Pattern 将读取和写入分开来处理。在读取数据之前,必... 阅读全文
posted @ 2013-09-15 01:13 刺猬的温驯 阅读(497) 评论(0) 推荐(0) 编辑

摘要: 目录(?)[-]Guarded Suspension PatternBalking Pattern Producer-Consumer Pattern Guarded Suspension Pattern 该模式描述的是当一个线程在执行某个操作时,但由于其他资源还没有准备好,需要等待,那么就等待资源准备好才开始自己的操作。我们直接看代码例子:[java] view plaincopypublicclassRequest{privateStringname;publicRequest(Stringname){this.name=name;}publicStringgetName(){retur. 阅读全文
posted @ 2013-09-15 01:06 刺猬的温驯 阅读(575) 评论(0) 推荐(0) 编辑

摘要: 目录(?)[-]Java多线程基础Thread类的run方法和start方法线程的启动线程的暂时停在线程的共享互斥线程的协调Single Threaded Execution PatternJava多线程基础Thread类的run方法和start方法 Java语言写成的程序一定是先从主线程开始操作,所以必须在程序的某个位置启动新的线程,才能算是真正的多线程程序。start()方法是 Thread类的方法,调用start()方法,就会启动新的线程。请注意,被调用来启动线程的是start()方法,而非run()方法。调用 start()方法之后,Java执行处理系统会在背后启动新的线程。再由这.. 阅读全文
posted @ 2013-09-15 01:00 刺猬的温驯 阅读(1659) 评论(0) 推荐(1) 编辑

摘要: 备忘录模式(Memento Pattern)备忘录模式能够在不破坏封装的前提下,捕捉对象的内部状态,并将该状态保持在对象外部,这样对象以后就可以很容易的恢复到原先保存的状态。备忘录模式涉及三个角色:发起人(Originator)角色,负责人(Caretaker)角色和备忘录(Memento)角色。三者之间的关系如下:Java版本的代码实现可以在这里下载。状态模式(State Pattern)状态模式允许一个对象的内部状态发生变化的时候,其行为也发生变化。状态模式把对象的行为封装在不同的状态对象里,每一个状态类都属于一个抽象状态类的子类。状态模式的意图即为当一个对象的状态发生变化时,其行为也随之 阅读全文
posted @ 2013-09-15 00:49 刺猬的温驯 阅读(148) 评论(0) 推荐(0) 编辑

摘要: 桥梁模式(Bridge Pattern)桥梁模式是使用频率不高的一种设计模式,但是是一种“威力”很大的模式。该模式的意图为“将抽象和实现解耦,各种的变化不影响对方”。这里的“抽象”和“实现”不是指传统意义上的父类与子类的关系,恰恰相反,该模式就是认为传统的父与子的继承关系太过耦合,相互的变化都会影响到彼此,为解决该问题,才提出的一种解决方案。这里可以下载桥梁模式的Java实现版本。如下是桥梁模式的UML类设计图:不变模式(Immutable Pattern)不变对象是指一旦一个对象被创建,那么它的状态将不会被改变。如果要改变一个对象的状态,那么必须重新实例化一个新的变量。不变对象由于内部状态不 阅读全文
posted @ 2013-09-15 00:46 刺猬的温驯 阅读(141) 评论(0) 推荐(0) 编辑

摘要: 门面模式(Facade Pattern)由于客户端需要调用多个系统才能完成一件业务操作,所以客户端需要感知多个子系统,并依赖这些子系统。门面(Facade)的作用就是聚合这些子系统,由门面对外提供接口,客户端只需要感知和依赖门面即可,无需再依赖其他子系统。门面模式的设计和实现都很简单,这里可以下载门面模式的Java实现版本。门面模式的UML类图如下:享元模式(Flyweight Pattern)享元模式是对象结构模式,它以共享的方式高效的支持大量的细粒度对象。java.lang.String类就使用了享元模式,java.lang.String对象是不可变对象,一旦创建,将不会被修改,如果需要修 阅读全文
posted @ 2013-09-15 00:37 刺猬的温驯 阅读(144) 评论(0) 推荐(0) 编辑

摘要: 适配器模式当我们有一个可以立即使用的类时,由于不符合客户端使用的接口时,我们需要创建一个适配器(adpter),以使当前可用的类能够被客户端对象使用。而在适配已有类时,存在两种方法,一种是通过继承的方式来适配,一种是通过引用(组合)的方式来适配,前者叫类适配,而后者加对象适配。适配器的两种Java实现在这里可以下载。以下是类适配的UML类图:以下是对象适配的UML类图:构建模式构建模式是创建模式的一种,该模式有点类似与抽象工厂模式,不同的构建对象构建不同的产品,但构建模式与抽象工厂模式不同在于,构建模式是一步步构建出被构建对象的,即产品对象。以下是构建模式的Java实现(点击这里下载)。以下是 阅读全文
posted @ 2013-09-15 00:33 刺猬的温驯 阅读(118) 评论(0) 推荐(0) 编辑

摘要: 工厂模式工厂模式在实践中有如下三种常用:简单工厂(Simple Factory)、工厂方法(Factory Method)和抽象工厂(Abstract Factory)。其中Simple Factory并不是GoF提出的23种设计模式之一,但由于其实现简单所以也被广泛使用。以下是三种工厂模式的类设计图和Java代码实现(点击这里下载):简单工厂类设计图:工厂方法类设计图:抽象工厂类设计图:代理模式代理模式在实践中我们经常使用的由静态代理和动态代理。静态代理比较简单,也比较容易理解,但如果系统中需要代理的对象很多,势必照成代理类的泛滥,那此时动态代理就排上用场了。另外,后来流行起来的AOP技术也 阅读全文
posted @ 2013-09-15 00:31 刺猬的温驯 阅读(116) 评论(0) 推荐(0) 编辑