package 代理模式;
/***
*
* @author maizi 教练 真正实现类
*
*/
public class Coach implements Itactic{
private String name;
public Coach(String name){
this.name = name;
}
@Override
public void run() {
System.out.println(this.name+"说:大家开始跑位。。。。。。");
}
@Override
public void shot() {
System.out.println(this.name+"说:三分射手开始投球。。。。。");
}
}
package 代理模式;
public interface Itactic { // 共同的能力
void run(); // 跑位
void shot();// 射击
}
package 代理模式;
/***
*
* @author maizi 控球后卫 代理执行教练战术
*
*/
public class PGPlayerProxy implements Itactic {
private Itactic tachtic;
private String name;
public PGPlayerProxy(String name) {
this.tachtic = new Coach(name);
}
@Override
public void run() {
this.before();
this.tachtic.run();
this.after();
}
@Override
public void shot() {
this.tachtic.shot();
}
// 上面的是核心的业务, 如果对其中的一些业务需要进行一些特定的处理的话,
private void before(){
}
private void after(){
}
}
package 代理模式;
/***
*
* @author maizi
*
*
* 普通代理模式:
* 1. 调用着只能看到代理类,不知道真正实现的类,
* 2. 主要的核心就是,在代理类中有接口的一个属性对象。在代理里中,真正的接口在执行操作。
* 3. 再java中,其实就相当于一个接口去调用方法。 再这里也是一样,只是在这里通过了set的方法已经把真正处理的实现的子类给传了过来。
*/
public class Game {
public static void main(String[] args) {
Itactic tactic = new PGPlayerProxy("CP3");
tactic.run();
tactic.shot();
}
}