代理模式在程序设计中有两个对象,一个是代理对象,另一个是原对象。这两个对象共同实现了一个接口,这个接口代表着一个共同行为的抽象。在调用代理对象的同名方法的时候,其会调用原对象的同名方法。同时在此前后可以调用其它的方法,以增加服务去达到不同的效果。
对于客户(应用层),通常会调用接口,或直接调用代理类。调用接口,配合工厂方法使用,可以使应用层的业务逻辑与实现层的业务逻辑分离,实现解耦合。在修改代理类的时候,即增加操作或减少操作,对应用层与原对象的影响比较少。增强了代码的可维护性和扩展性。
public interface Actions(){
public void action();
}
public class Oregin Implements Actions{
public void action(){
System.out.println("Do Aticon!")
}
}
public class Proxy Implements Actions{
private Oregin o = new Oregin();
private void beforeAtion(){
System.out.println("Thank you for calling!");
}
private void afterAtion(){
System.out.println("Action finish!");
}
public void action(){
beforeAction();
if(o=null){
o = new Oregin();
}
o.action();
afterAtion();
}
}
public class ProxyFactory{
private Proxy p = null;
public ProxyFactory(){p = new Proxy();}
public Proxy getProxy(){
if(p!=null){
return p;
} else{
return new proxy();
}
}
}
public class Client{
private ProxyFactory pf = new ProxyFactory();
public void process(){
Actions a = pf.getProxy();
a.action();
}
public static void main(String[] args){
Client c = new Client();
c.proecss();
c.close();
}
}