代理模式Proxy
为其他对象提供一种代理控制对这个对象的访问,引入了一定程度的间接性
RealSubject 被代理角色,
Proxy代理角色,持有一个realSubject对象引用
实例
Subject (接口)
public interface GiveGift {
void giveFlower();
void giveFood();
}
RealSubject 被代理者
public class RealSubject implements GiveGift{
private String name;
public RealSubject(String name){
this.name = name;
}
@Override
public void giveFlower() {
System.out.println("送花"+name);
}
@Override
public void giveFood() {
System.out.println("送吃的"+name);
}
}
Proxy代理
所完成的功能实际上都是被代理者的,
public class Proxy implements GiveGift {
private RealSubject rs;
public Proxy(String name) {
this.rs = new RealSubject(name);
}
@Override
public void giveFlower() {
rs.giveFlower();
}
@Override
public void giveFood() {
rs.giveFood();
}
}
测试
实际上用的都是RealSubject中的方法,但测试类中却没有该类,该类一倍Proxy代理了
public static void main(String[] args) {
Proxy proxy = new Proxy("chichi");
proxy.giveFlower();
proxy.giveFood();
}