没有代理
//追求者
class Pursuit
{
SchoolGirl mm;
public Pursuit(SchoolGirl mm)
{
this.mm=mm;
}
public void DiveDolls()
{
System.out.println(mm.Name+"送你洋娃娃");
}
public void GiveFlowers()
{
System.out.println(mm.Name+"送你鲜花");
}
public void GiveChocolate()
{
System.out.println(mm.Name+"送你巧克力");
}
}
//被追求者
class SchooleGirl
{
private String name;
public String getName()
{return name;}
public setName(String value)
{name = value;}
}
//客户端代码
public class Program
{
public static void main(String[] args)
{
SchoolGirl jiaojiao = new SchoolGirl();
jiaojiao.setName("李娇娇");
Pursuit zhuojiayi = new Pursuit(jiaojiao);
//从代码来看,卓佳怡和娇娇是认识的,并且,卓佳怡直接把鲜花巧克力和洋娃娃送给了娇娇。但是娇娇不认识卓佳怡
zhuojiayi.GiveDolls();
zhuojiayi.GiveFlowers();
zhuojiayi.GiveChocolate();
}
}
只有代理
class Proxy
{
SchoolGirl mm;
public Proxy(SchoolGirl mm)
{
this.mm = mm;
}
public void GiveDolls()
{
System.out.println(mm.Name+"送你洋娃娃");
}
public void GiveFlowers()
{
System.out.println(mm.Name+"送你鲜花");
}
public void GiveChocolate()
{
System.out.println(mm.Name+"送你巧克力");
}
}
//被追求者
class SchooleGirl
{
private String name;
public String getName()
{return name;}
public setName(String value)
{name = value;}
}
//客户端代码
public class Program
{
public static void main(String[] args)
{
SchoolGirl jiaojiao = new SchoolGirl();
jiaojiao.setName("李娇娇");
Pursuit daili = new Pursuit(jiaojiao);
//把Pursuit(追求者)换成Proxy(代理),把卓佳怡换成戴利。使得这个礼物变成是戴利送的,忽略了Pursuit追求者。
daili.GiveDolls();
daili.GiveFlowers();
daili.GiveChocolate();
}
}
被追求者
class SchoolGirl
{
private String name;
public String getName()
{return name;}
public setName(String value)
{name = value;}
}
送礼物
class SchoolGirl
{
private String name;
public String getName()
{return name;}
public setName(String value)
{name = value;}
}
追求者
class Pursuit implement IGiveGift//追求者实现送礼物接口
{
SchoolGirl mm;
public Pursuit(SchoolGirl mm)
{
this.mm = mm;
}
public void GiveDolls()
{
System.out.println(mm.Name + "送你洋娃娃");
}
public void GiveFlowers()
{
System.out.println(mm.Name+"送你鲜花");
}
public void GiveChocolate()
{
System.out.println(mm.Name+"送你巧克力");
}
}
代理
class Proxy implement IGiveGift//代理实现送礼物接口
{
pursuit gg;
public Proxy(SchoolGirl mm)
{
gg=new Pursuit(mm);
}
public void GiveDolls()
{
gg.GiveDolls();
}
public void GiveFlowers()
{
gg.GiveFlowers();
}
public void GiveChocolate()
{
gg.GiveChocolate();
}
}
客户端
public class Program
{
public static void main(String[] args)
{
SchoolGirl jiaojiao = new SchoolGirl();
jiaojiao.setName("李娇娇");
Pursuit daili = new Pursuit(jiaojiao);
daili.GiveDolls();
daili.GiveFlowers();
daili.GiveChocolate();
}
}
//Subject类,定义了RealSubject和Proxy的共用接口,这样就在任何使用RealSubject的地方都可以使用Proxy。
abstract class Subject
{
public abstract void Request();
}
//RealSubject类,定义Proxy所代表的真是实体
class RealSubject implement Subject
{
public override void Request()
{
System.out.println("真是的请求");
}
}
//Proxy类,保存一个真是实体的引用,使得代理可以访问实体,并提供一个与Subject的接口相同的接口,这样的代理可以用来替代实体。
class Proxy implement subject
{
RealSubject realSubject;//真是实体
public override void Request()
{
if(readSubject == null)
{realSubject = newRealSubject();}
realSubject.Request();
}
}
public class Program//客户端代码
{
public static void main(String[] args){
Proxy proxy = new Proxy();
proxy.Request();
}
}