今天讲Java设计模式之代理模式
先看定义
通过引入一个新的对象来实现对真实对象的操作或将新的对象作为真实对象的一个替身,这样的实现机制是代理模式。
定义:为其他对象提供一种代理以控制对这个对象的访问。
实质:控制对象访问
动机:通过引入代理对象来间接访问一个对象,就是代理模式的动机
需求:隔壁班的一追求者想追本班的一妹子,但是他不认识妹子,不过他的朋友和妹子是同桌,如是他通过朋友向妹子送洋娃娃,鲜花,巧克力。
好需求已明白现在上代码
public interface IGiveGift { //具体的动作
public void GiveDolls(); //送洋娃娃
public void GiveFlowers(); //送花
public void GiveChocolate(); //送巧克力
}
</pre><pre name="code" class="java">public class SchoolGirl { //妹子
private String name;
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
public SchoolGirl(String name){
this.name = name;
}
}
public class Pursuit implements IGiveGift { //追求者
private SchoolGirl mm;
public Pursuit(SchoolGirl mm){
this.mm = mm;
}
@Override
public void GiveDolls() {
// TODO Auto-generated method stub
System.out.println(mm.getName()+"送你洋娃娃");
}
@Override
public void GiveFlowers() {
// TODO Auto-generated method stub
System.out.println(mm.getName()+"送你鲜花");
}
@Override
public void GiveChocolate() {
// TODO Auto-generated method stub
System.out.println(mm.getName()+"送你巧克力");
}
}
public class Proxy implements IGiveGift { //代理者
private Pursuit gg;
public Proxy(SchoolGirl mm){
gg = new Pursuit(mm);
}
@Override
public void GiveDolls() {
// TODO Auto-generated method stub
gg.GiveDolls();
}
@Override
public void GiveFlowers() {
// TODO Auto-generated method stub
gg.GiveFlowers();
}
@Override
public void GiveChocolate() {
// TODO Auto-generated method stub
gg.GiveChocolate();
}
}
public class Client {
public static void main(String[] args) { //测试
// TODO Auto-generated method stub
SchoolGirl mm = new SchoolGirl("漂亮的妹子");
Proxy proxy = new Proxy(mm);
proxy.GiveDolls();
proxy.GiveFlowers();
proxy.GiveChocolate();
}
}