1 接口 比如 鸡 鸭 都抽象为禽类
// 具有相同的特性的一类代理 将具有相同的方法的类的接口 抽象 lol玩家和英雄都有大招等技能
public interface Proxy {//重伤效果
public void makeEyes();
//大招
public void happyWith();
}
2 代理类
玩家不能进入游戏中真实的厮杀 放技能 可以通过 英雄 例如EZ
public class EZProxy implements Proxy {
private Proxy proxy;
//默认的话时召唤师1的代理
public EZProxy() {
this.proxy = new ZhaoHuanShi1();
}
//可以时任何一个召唤师的代理
public EZProxy(Proxy proxy) {
this.proxy = proxy;
}
@Override
public void makeEyes() {
// TODO Auto-generated method stub
//EZ说让召唤师1操作更666
// System.out.println("EZ 使用点燃了 重伤了 对手");
this.proxy.makeEyes();
}
@Override
public void happyWith() {
// TODO Auto-generated method stub
//EZ说让召唤师1操作更666
// System.out.println("EZ 使用大招了 打残了 对手");
this.proxy.happyWith();
}
}
3 被代理的 召唤师1
public class ZhaoHuanShi1 implements Proxy {
@Override
public void makeEyes() {
// TODO Auto-generated method stub
System.out.println("召唤师1 使用引燃 重伤了对手");
}
@Override
public void happyWith() {
// TODO Auto-generated method stub
System.out.println("召唤师1 使用大招 打残了对手");
}
}
4 被代理的召唤师2
public class ZhaoHuanShi2 implements Proxy {
@Override
public void makeEyes() {
// TODO Auto-generated method stub
System.out.println("召唤师2 使用w干对手了 ");
}
@Override
public void happyWith() {
// TODO Auto-generated method stub
System.out.println("召唤师2 使用r 大杀特杀了");
}
}
5 召唤师和英雄都已经选择好了
// 英雄和召唤师都选好了 现在开始pk
public class TestMain {
/*
* 代理模式主要使用了 Java 的多态,干活的是被代理类,代理类主要是 接活,你让我干活,好,我交给幕后的类去干,你满意就成,那怎么知道被代理类能不能干呢?同根就成,
* 大家知根知底,你能做啥,我能做啥都清楚的很,同一个接口呗
*/
public static void main(String[] args) {
//ez在屏幕上到达战场
EZProxy ez = new EZProxy();
ez.makeEyes();//表面上时ez在 释放技能 实际上时召唤师在玩耍
ez.happyWith();
ZhaoHuanShi2 z2 = new ZhaoHuanShi2();
ez = new EZProxy(z2);
ez.makeEyes();
ez.happyWith();//表面上是ez大杀特杀 实际上时召唤师2在玩耍
}
}
总结 : 代理模式主要使用了 Java 的多态,干活的是被代理类,代理类主要是 接活,你让我干活,好,我交给幕后的类去干,你满意就成,那怎么知道被代理类能不能干呢?同根就成,
大家知根知底,你能做啥,我能做啥都清楚的很,同一个接口呗