設計模式目錄:html
設計模式 1 ——觀察者模式java
設計模式 2 —— 裝飾者模式 設計模式
設計模式 5 —— 工廠模式post
設計模式 9 —— 模板方法模式.net
代理模式爲另外一個對象提供一個替身或佔位符以控制這個對象的訪問。
使用代理模式建立表明,讓表明對象控制某些對象的訪問,被代理的對象能夠是遠程的對象、建立開銷大的對象或者須要安全控制的對象。
幾種代理控制訪問的方式:
遠程代理
抽象對象角色
package cn.telling.rmi; /** * * @ClassName: AbstractObject * TODO * @author xingle * @date 2015-9-29 上午10:48:42 */ public abstract class AbstractObject { //操做 public abstract void operation(); }
目標對象角色
package cn.telling.rmi; /** * * @ClassName: RealObject TODO * @author xingle * @date 2015-9-29 上午10:52:49 */ public class RealObject extends AbstractObject { /** * * @Description: TODO * @author xingle * @data 2015-9-29 上午10:53:05 */ @Override public void operation() { // 一些操做 System.out.println("一些操做"); } }
代理對象角色
package cn.telling.rmi; /** * * @ClassName: ProxyObject * TODO * @author xingle * @date 2015-9-29 上午10:54:31 */ public class ProxyObject extends AbstractObject{ RealObject realObject = new RealObject(); /** * * @Description: TODO * @author xingle * @data 2015-9-29 上午10:54:43 */ @Override public void operation() { System.out.println("調用目標對象 before 操做"); realObject.operation(); System.out.println("調用目標對象 after 操做"); } }
客戶端
package cn.telling.rmi; /** * * @ClassName: Client * TODO * @author xingle * @date 2015-9-29 上午10:57:54 */ public class Client { public static void main(String[] args){ AbstractObject obj = new ProxyObject(); obj.operation(); } }
執行結果: