设计模式之代理模式

来源:互联网 发布:饿了么送餐软件 编辑:程序博客网 时间:2024/04/28 18:45
定义: 代理模式是结构型模式的一种,为其他对象提供一种代理以控制对这个对象的访问。

角色:
  • Proxy:代理角色,类中保存了实际对象的引用,从而可以访问实际对象。
  • Subject: RealSubject和Proxy的共用接口,从而在使用实际对象的地方用Proxy代替
  • RealSubject:实际对象,Proxy所代表的实体。
       
       示例:

Subject:
package com.xtli.controller.javaDesignPatterns.proxyPattern;/* * Subject角色:Proxy与RealSubject共用的接口 */public interface Object {    void action();}

RealSubject:
/* * RealSubject:实际访问的对象 */public class ObjectImpl implements Object {    public void action() {        System.out.println("========");        System.out.println("========");        System.out.println("这是被代理的类");        System.out.println("========");        System.out.println("========");    }}

Proxy:
package com.xtli.controller.javaDesignPatterns.proxyPattern;/* * Proxy:代理对象,与RealSubject实现共同的接口, * 从而在访问RealSubject时,可以用Proxy代替。 */public class ProxyObject implements Object {    Object obj;    public ProxyObject(Object obj) {        System.out.println("这是代理类");        this.obj = obj;    }    public void action() {        System.out.println("代理开始");        obj.action();        System.out.println("代理结束");    }}

Test:
package com.xtli.controller.javaDesignPatterns.proxyPattern;public class Test {    public static void main(String[] args) {     Object obj = new ProxyObject(new ObjectImpl());        obj.action();    }}

结果:



代理模式与装饰模式区别:两者乍一看类似,但实际上功能不同,装饰模式是为对象增加功能的,而代理模式的目的是控制对某个对象的访问。