代理模式
一、什么是代理模式
- 代理模式:为其他对象提供一种代理以控制对这个对象的访问
二、简单例子
- 这里面的骏骏就起到了代理的身份,而贵贵则是被代理的身份。
三、代码实现
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; //通过构造器将要送东西的航航信息录进来}@Overridepublic void sendingDolls() {System.out.println("lmg送玩偶给"+gril.name);}@Overridepublic void sendEarrings() {System.out.println("lmg送耳环给"+gril.name);}@Overridepublic 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);}@Overridepublic void sendingDolls() {lmg.sendingDolls();}@Overridepublic void sendEarrings() {lmg.sendEarrings();}@Overridepublic 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();} }