代理模式
1.定义:
为其他对象提供一种代理,以控制对这个对象的访问。
代理类和被代理类实现相同的功能,所以实现相同的接口。

2.以一个场景模拟代理类的应用
李大头喜欢公主,但是不好意思说出来,就让好友戴笠代替自己去给公主送礼物。这里李大头就是被被代理类,戴笠就是代理类。

(1)接口类
package com.proxy;
//总的接口
public interface GiveGift {
public void giveDolls();
public void giveFlowers();
public void giveChocolate();
}
(2)真实被代理类
package com.proxy;
//真正的追求者
public class Pursiut implements GiveGift {
Girl girl;
public Pursiut(Girl girl) {
this.girl = girl;
}
@Override
public void giveDolls() {
System.out.println(girl.getName()+"送你洋娃娃");
}
@Override
public void giveFlowers() {
System.out.println(girl.getName()+"送你鲜花");
}
@Override
public void giveChocolate() {
System.out.println(girl.getName()+"送你巧克力");
}
}
(3)代理类
package com.proxy;
//代理类
public class Proxy implements GiveGift{
Pursiut pursiut;
public Proxy(Girl girl) {
this.pursiut=new Pursiut(girl);
}
@Override
public void giveDolls() {
pursiut.giveDolls();
}
@Override
public void giveFlowers() {
pursiut.giveFlowers();
}
@Override
public void giveChocolate() {
pursiut.giveChocolate();
}
}
(3) 交互对象
package com.proxy;
public class Girl {
String name;
public Girl(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
(4)客户端类
package com.proxy;
public class Client {
public static void main(String[] args) {
Girl girl=new Girl("公主"); //公主,被追求者;
Proxy proxy=new Proxy(girl);
proxy.giveDolls();
proxy.giveChocolate();
proxy.giveFlowers();
}
}
(5)运行测试
公主送你洋娃娃
公主送你巧克力
公主送你鲜花
代理模式详解:实战模拟李大头与戴笠的礼物传递
本文通过实例讲解代理模式,阐述如何用Java实现,以李大头追求公主的故事中,戴笠作为代理角色来控制访问,展示了接口、被代理类、代理类和客户端的交互过程。

被折叠的 条评论
为什么被折叠?



