文章参考:代理模式的使用总结_张彦峰ZYF的博客-CSDN博客
上文过于全面,so,仅记录学习
代理模式:
他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。简单的说就是,我们在访问实际对象时,是通过代理对象来访问的,代理模式就是在访问实际对象时引入一定程度的间接性,因为这种间接性,可以附加多种用途。
demo:
public interface GiveGift {
void GiveDolls();
void GiveFlowers();
void GiveChocolate();
}
public class SchoolGirl {
private String name;
public String Name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class Pursuit implements GiveGift{
SchoolGirl mm;
public Pursuit(SchoolGirl mm) {
this.mm = mm;
}
@Override
public void GiveDolls() {
System.out.println("GiveDolls");
}
@Override
public void GiveFlowers() {
System.out.println("GiveFlowers");
}
@Override
public void GiveChocolate() {
System.out.println("GiveChocolate");
}
}
public class Proxy implements GiveGift{
Pursuit gg;
public Proxy(SchoolGirl mm) {
gg = new Pursuit(mm);
}
@Override
public void GiveDolls() {
gg.GiveDolls();
}
@Override
public void GiveFlowers() {
gg.GiveFlowers();
}
@Override
public void GiveChocolate() {
gg.GiveChocolate();
}
}
public class Main {
public static void main(String[] args) {
SchoolGirl jiaojiao = new SchoolGirl();
jiaojiao.Name = "jiaojiao";
Proxy daili = new Proxy(jiaojiao);
daili.GiveDolls();
daili.GiveFlowers();
daili.GiveChocolate();
}
}