代理模式
一、什么是代理模式
- 代理模式:为其他对象提供一种代理以控制对这个对象的访问
二、简单例子
- 这里面的骏骏就起到了代理的身份,而贵贵则是被代理的身份。
三、代码实现
1、用一个接口(GivingGifts)来保存送礼物的动作
java
package java_proxy;
/**
* 这是送礼物的接口,要送礼物就要实现接口
*/
public interface GivingGifts {
void sendingDolls(); //送玩偶
void sendEarrings(); //送耳环
void sendingFlowers(); //送鲜花
}
2、航航的类
-
属性用于保存姓名
java
public class Gril {
public String name;
public Gril(String nameString){
this.name = nameString;
}
}
3、被代理类(贵贵)
java
/**
* 贵贵
*/
public class Lmg implements GivingGifts{
private Gril gril; //要送东西的对象
public Lmg(Gril gril) {
this.gril = gril; //通过构造器将要送东西的航航信息录进来
}
@Override
public void sendingDolls() {
System.out.println("lmg送玩偶给"+gril.name);
}
@Override
public void sendEarrings() {
System.out.println("lmg送耳环给"+gril.name);
}
@Override
public void sendingFlowers() {
System.out.println("lmg送鲜花给"+gril.name);
}
}
4、代理类(骏骏)
java
/**
* 代理类,代理lmg要做的事
*/
public class Zzj implements GivingGifts{
private Lmg lmg;
public Zzj(Gril gril) { //将航航的信息通过lmg的构造器导入进去,因为lmg这个类不声明
lmg = new Lmg(gril);
}
@Override
public void sendingDolls() {
lmg.sendingDolls();
}
@Override
public void sendEarrings() {
lmg.sendEarrings();
}
@Override
public void sendingFlowers() {
lmg.sendingFlowers();
}
}
5、测试代码
java
public class Main {
public static void main(String[] args) {
Gril lwh = new Gril("lwh"); //声明被送礼物的人的对象
Zzj zzj = new Zzj(lwh); //声明代理类的对象,并将对方信息导入
zzj.sendingDolls();
zzj.sendEarrings();
zzj.sendingFlowers();
}
}