代理模式
一、什么是代理模式
- 代理模式:为其他对象提供一种代理以控制对这个对象的访问
二、简单例子
- 这里面的骏骏就起到了代理的身份,而贵贵则是被代理的身份。
三、代码实现
1、用一个接口(GivingGifts)来保存送礼物的动作
-
package java_proxy; /** * 这是送礼物的接口,要送礼物就要实现接口 */ public interface GivingGifts { void sendingDolls(); //送玩偶 void sendEarrings(); //送耳环 void sendingFlowers(); //送鲜花 }
2、航航的类
-
属性用于保存姓名
-
public class Gril { public String name; public Gril(String nameString){ this.name = nameString; } }
3、被代理类(贵贵)
-
/** * 贵贵 */ 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、代理类(骏骏)
-
/** * 代理类,代理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、测试代码
-
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(); } }
-