代理模式:代理接活,被代理人干活。主要是用了java的多态特性,定义一个借口,
让代理类和被代理类都实现该接口,关键在于在代理类的构造方法中引用被代理类
的构造方法。
接口:
public interface Start {
public void sing();
public void display();
}
代理类:
public class Start_Chou_Proxy implements Start {
public Start start;
public Start_Chou_Proxy(){
start = new Start_Chou();//关键是持有被代理类的构造。一个代理可以代理多个类,定义多个代理类的构造就行。
}
public Start_Chou_Proxy(Start start){
this.start = start;
}
@Override
public void sing() {
// TODO Auto-generated method stub
start.sing();
}
@Override
public void display() {
// TODO Auto-generated method stub
start.display();
}
}
被代理类:
public class Start_Chou implements Start {
@Override
public void sing() {
// TODO Auto-generated method stub
System.out.println("明星唱歌!!!");
}
@Override
public void display() {
// TODO Auto-generated method stub
System.out.println("明星演戲!!!");
}
}
代理模式实现方法测试:
public class Test {
public static void main(String[] args){
Start_Chou_Proxy start_Chou_Proxy = new Start_Chou_Proxy();
start_Chou_Proxy.sing();
start_Chou_Proxy.display();
}
}
总结:代理模式主要使用了Java的多态,干活的是被代理类,代理类主要是接活,你让我
干活,好,我交给幕后的类去干,你满意就成,那怎么知道被代理类能不能干呢?同根就成,
大家知根知底,你能做啥,我能做啥都清楚的很,同一个接口呗(摘自《设计模式之禅》)。
让代理类和被代理类都实现该接口,关键在于在代理类的构造方法中引用被代理类
的构造方法。
接口:
public interface Start {
public void sing();
public void display();
}
代理类:
public class Start_Chou_Proxy implements Start {
public Start start;
public Start_Chou_Proxy(){
start = new Start_Chou();//关键是持有被代理类的构造。一个代理可以代理多个类,定义多个代理类的构造就行。
}
public Start_Chou_Proxy(Start start){
this.start = start;
}
@Override
public void sing() {
// TODO Auto-generated method stub
start.sing();
}
@Override
public void display() {
// TODO Auto-generated method stub
start.display();
}
}
被代理类:
public class Start_Chou implements Start {
@Override
public void sing() {
// TODO Auto-generated method stub
System.out.println("明星唱歌!!!");
}
@Override
public void display() {
// TODO Auto-generated method stub
System.out.println("明星演戲!!!");
}
}
代理模式实现方法测试:
public class Test {
public static void main(String[] args){
Start_Chou_Proxy start_Chou_Proxy = new Start_Chou_Proxy();
start_Chou_Proxy.sing();
start_Chou_Proxy.display();
}
}
总结:代理模式主要使用了Java的多态,干活的是被代理类,代理类主要是接活,你让我
干活,好,我交给幕后的类去干,你满意就成,那怎么知道被代理类能不能干呢?同根就成,
大家知根知底,你能做啥,我能做啥都清楚的很,同一个接口呗(摘自《设计模式之禅》)。