设计模式之代理模式

来源:互联网 发布:数组大小可以任意改变 编辑:程序博客网 时间:2024/05/01 18:24

代理模式为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。

核心结构

1、抽象角色:通过接口或抽象类声明真实角色实现的业务方法。
2、代理角色:实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作。
3、真实角色:实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调用。

结构图

                                                           

代码示例

interface Person {    public void printPersonInfo();}class RealPerson implements Person {    private String name;    public RealPerson(String name) {         this.name = name;    }    public void printPersonInfo(){    System.out.println("RealPerson's name:" + name);    }} class ProxyPerson implements Person {    private String name;    private Person person;     public ProxyPerson(String name) {         this.name = name;     }    public void printPersonInfo() {        if(person == null)        person = new RealPerson(name);        person.printPersonInfo();    }} class ProxyExample {    public static void main(String[] args) {        Person person1 = new ProxyPerson("zhaohua");        Person person2 = new ProxyPerson("liuling");                     person1.printPersonInfo();        person2.printPersonInfo();    }}
一个复杂对象及多个代理者,每个代理者会引用到原本的复杂对象。而作用在代理者的运算会转送到原本对象。一旦所有的代理者都不存在时,复杂对象会被移除。


0 0
原创粉丝点击