河北商城网站建设价格,关键的近义词,重庆好网互联,福建省住房和城乡建设厅的网站一、定义
代理模式的定义#xff1a;为其他对象提供一种代理以控制对这个对象的访问。在某些情况下#xff0c;一个对象不适合或者不能直接引用另一个对象#xff0c;而代理对象可以在客户端和目标对象之间起到中介的作用。
著名的代理模式例子为引用计数#xff08;英语…一、定义
代理模式的定义为其他对象提供一种代理以控制对这个对象的访问。在某些情况下一个对象不适合或者不能直接引用另一个对象而代理对象可以在客户端和目标对象之间起到中介的作用。
著名的代理模式例子为引用计数英语reference counting指针对象。
当一个复杂对象的多份副本须存在时代理模式可以结合享元模式以减少存储器用量。典型作法是创建一个复杂对象及多个代理者每个代理者会引用到原本的复杂对象。而作用在代理者的运算会转送到原本对象。一旦所有的代理者都不存在时复杂对象会被移除。
二、组成及特点
抽象角色通过接口或抽象类声明真实角色实现的业务方法。
代理角色实现抽象角色是真实角色的代理通过真实角色的业务逻辑方法来实现抽象方法并可以附加自己的操作。
真实角色实现抽象角色定义真实角色所要实现的业务逻辑供代理角色调用。
特点
(1).职责清晰
真实的角色就是实现实际的业务逻辑不用关心其他非本职责的事务通过后期的代理完成一件完成事务附带的结果就是编程简洁清晰。
(2).代理对象可以在客户端和目标对象之间起到中介的作用这样起到了中介的作用和保护了目标对象的作用。
(3).高扩展性
三、类结构图 四、实现
//送礼物接口
public interface IGiveGift {void giveDolls();void giveFlowers();void giveChocolate();
}
//被代理对象
public class SchoolGirl {private String name;public String getName() {return name;}public void setName(String name) {this.name name;}
}
//追求者
public class Pursuit implements IGiveGift{private SchoolGirl mm;public Pursuit(SchoolGirl mm) {this.mm mm;}public void giveDolls(){System.out.println(giveDolls);}public void giveFlowers(){System.out.println(giveFlowers);}public void giveChocolate(){System.out.println(giveChocolate);}
}
//代理
public class Proxy implements IGiveGift {private Pursuit gg;public Proxy(SchoolGirl gg) {this.gg new Pursuit(gg);}Overridepublic void giveDolls() {gg.giveDolls();}Overridepublic void giveFlowers() {gg.giveFlowers();}Overridepublic void giveChocolate() {gg.giveChocolate();}
}