深入浅出设计模式之状态模式、代理模式
2017-03-23 22:24
190 查看
状态模式
当你开发的项目通常是由一个一个的状态以及状态之间的转换构成时,可以考虑使用状态模式。先看一下状态模式的类图,和适配器模式特别像我们来拿深入浅出上面的糖果机来做例子,代码有点多,就不写了。可以自己下这本书来看。感觉还是挺好玩的。
代理模式
所谓的代理模式,就是用这个代理去代表某个对象,从而实现某些功能。比如这个代理是个监视器,负责监视代理对象的一些状态。或者你需要用这个代理获得远程对象的数据等等。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(); } }
动态代理前面的文章写了,记住就好了。
相关文章推荐
- 深入浅出基于Java的代理设计模式
- 深入浅出基于Java的代理设计模式
- 201802191230->深入浅出设计模式:c#代理模式
- 深入浅出――基于Java的代理设计模式
- 深入浅出设计模式-012:状态模式(State Pattern)
- 深入浅出设计模式(七):9.代理模式
- 状态模式(深入浅出设计模式)
- 深入浅出Java设计模式之状态模式
- 深入浅出设计模式-013:代理模式(Proxy Pattern控制和管理访问)
- 深入浅出设计模式——状态模式(State Pattern)
- 设计模式笔记(九)--状态模式、代理模式
- 深入浅出设计模式笔记之十:代理模式
- 201802272223->深入浅出设计模式:c#状态模式
- 深入浅出设计模式笔记之十八:状态模式
- 深入浅出基于Java的代理设计模式
- 深入浅出基于Java的代理设计模式
- 设计模式:性能与对象访问(享元,代理) :对象状态(备忘录)
- 深入浅出基于Java的代理设计模式
- C#中利用代理实现观察者设计模式
- 设计模式之Proxy(代理)