代理模式第二篇
摘要:通过代理模式第一篇,我们已经有了RMI的基础知识,现在可以用RMI实现糖果机的远程代理了。远程服务是一个GumballMachine糖果机,具有一些属性和获得属性值得方法。客户端是GumballMonitor监视器,监视器和远程服务糖果机不在同一个JVM堆中。实现代码如下:服务端:远程服务接口,客户...
阅读全文
posted @
2014-08-06 09:50
吉大依恋
阅读(302)
推荐(0)
代理模式第一篇
摘要:简单的说就是有一个远程服务和若干台监视器,监视器用来监视远程服务中的有关数据。监视任务的障碍点在于远程服务和监视器程序不在同一个JVM上。这就导致监视器没法在本地直接调用服务器的方法对其进行监控。我们需要一个代理来,监视器所做的就像是在做远程方法调用,但其实只是调用本地堆中的"代理"对象上的方法,再...
阅读全文
posted @
2014-08-05 16:48
吉大依恋
阅读(537)
推荐(1)
命令模式第二篇
摘要:命令模式第一篇中把问题简化成一个遥控器,它只有一个按钮和对应的插槽,可以控制一个装置。根据需求,现在有7个插槽,每个插槽都有一个开和关按钮,可以控制一个装置。只需将远程控制对象中的单个命令组件换成命令组件数组即可。再加一个控制整个装置的撤销按钮。实现代码如下:public interface Com...
阅读全文
posted @
2014-08-04 19:09
吉大依恋
阅读(171)
推荐(0)
命令模式第一篇
摘要:需求:现有一个遥控器,有七个可编程的插槽,每个插槽都对应开关按钮,遥控器还具备一个整体的撤销按钮。可控装置:电灯、风扇、热水器、音响设备和其它类似的可控制装备。要求能够控制目前的装置和任何未来可能出现的装置。我们把这个过程想象成餐厅吃饭的过程:顾客根据菜单点单,然后将订单给服务员,服务员将订单放到厨...
阅读全文
posted @
2014-08-04 15:53
吉大依恋
阅读(367)
推荐(0)
单件模式
摘要:单件模式确保一个类只有一个实例,并提供一个全局访问点。由于比较简单,这里只给出具体代码。其中volatile用来修饰被不同线程访问和修改的变量。如果没有volatile,基本上会导致这样的结果:要么无法编写多线程程序,要么编译器失去大量优化的机会。public class Singleton { ...
阅读全文
posted @
2014-08-04 09:55
吉大依恋
阅读(236)
推荐(0)
工厂模式
摘要:工厂模式包括二种:工厂方法和抽象工厂。二者都是让子类决定该创建的对象是什么,来达到将对象创建的过程封装的目的。但二者略有不同,工厂方法是通过继承来实现,而抽象工厂是通过组合来实现的。首先不考虑调料的不同的情况下,随时会有Pizza联盟店加入进来。Pizza联盟店地址不同,当地的风俗和口味也会不一样。...
阅读全文
posted @
2014-08-03 19:45
吉大依恋
阅读(176)
推荐(0)
装饰者模式
摘要:需求:顾客能在购买咖啡(咖啡种类有多种)的同时购买任意种类和数量的调料。例如顾客想要购买摩卡和奶泡深焙咖啡。分解为:1.深焙咖啡2.用调料摩卡装饰深焙咖啡3.用调料奶泡装饰摩卡深焙咖啡规定店中所有提供的饮料均继承基类Beverage。实现图如下:实现代码如下:Beverage基类:public ab...
阅读全文
posted @
2014-08-01 21:23
吉大依恋
阅读(150)
推荐(0)
观察者模式
摘要:目的:用WeatherData对象从气象台取得数据并更新布告板,考虑系统的可扩展性,满足随心所欲添加或删除布告板。如图所示:考虑在同一时刻只选择一个布告板并显示的情况。抽取中其中改变的部分,即布告板。设想实现如下图:上图设计中可以满足弹性的任意选择一个布告板并对其进行更新。然而我们需要的是有多个布告...
阅读全文
posted @
2014-08-01 17:05
吉大依恋
阅读(312)
推荐(1)
策略模式
摘要:策略模式(基于接口编程。随时想到一个问题,那就是如果后期有新的行为需要添加,如何提高代码的弹性和复用性):抽象类鸭子都会游泳,会有不同的外观。具体类鸭子继承基类,因此具备了基类鸭子的特性和行为。现在有个新的需求,要求一个会飞的鸭子和吱吱叫的鸭子,如果将会飞行为和叫的行为直接加入基类中,那么所有继承该...
阅读全文
posted @
2014-07-31 21:13
吉大依恋
阅读(201)
推荐(0)