深入浅出设计模式之状态模式、代理模式

状态模式

当你开发的项目通常是由一个一个的状态以及状态之间的转换构成时,可以考虑使用状态模式。先看一下状态模式的类图,和适配器模式特别像
我们来拿深入浅出上面的糖果机来做例子,代码有点多,就不写了。可以自己下这本书来看。感觉还是挺好玩的。


代理模式

所谓的代理模式,就是用这个代理去代表某个对象,从而实现某些功能。比如这个代理是个监视器,负责监视代理对象的一些状态。或者你需要用这个代理获得远程对象的数据等等。
java中最典型的的代理模式就是RMI远程通信。RMI在客户端和服务器端都持有相同的一组接口,这组接口的实现在客户端,和服务器端有点区别。
我们来看看Java的RMI是如何实现的:


先不写了,代理模式也比较简单,RMI比较难

静态代理模式其实很常见,比如买火车票这件小事:黄牛相当于是火车站的代理,我们可以通过黄牛买票,但只能去火车站进行改签和退票。在代码实现中相当于为一个委托对象realSubject提供一个代理对象proxy,通过proxy可以调用realSubject的部分功能,并添加一些额外的业务处理,同时可以屏蔽realSubject中未开放的接口。


 

1、RealSubject 是委托类,Proxy 是代理类;
2、Subject 是委托类和代理类的接口;
3、request() 是委托类和代理类的共同方法;

具体代码实现如下:

interface Subject {
    void request(); } class RealSubject implements Subject { public void request(){ System.out.println("RealSubject"); } } class Proxy implements Subject { private Subject subject; public Proxy(Subject subject){ this.subject = subject; } public void request(){ System.out.println("begin"); subject.request(); System.out.println("end"); } } public class ProxyTest { public static void main(String args[]) { RealSubject subject = new RealSubject(); Proxy p = new Proxy(subject); p.request(); } }
动态代理前面的文章写了,记住就好了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值