代理类图
如果采用工厂模式和配置文件进行管理,则不需要修改客户端程序,
在配置文件中配置 是否使用目标类、还是代理类,这样以后容易切换。
譬如:想要日志功能时,就配置代理类,否则配置目标类。
销售例子
package com.proxy;
public interface Saleable {
public void sale();
}
package com.proxy;
public class SellerProxy implements Saleable{
private Saleable seller;
public SellerProxy(Saleable seller)
{
this.seller = seller;
}
@Override
public void sale() {
System.out.println("销售前");
this.seller.sale();
System.out.println("销售后");
}
}
package com.proxy;
public class Seller implements Saleable{
public void sale()
{
System.out.println("销售中");
}
public static void main(String[] args) {
Saleable sab = new Seller();
Saleable sp = new SellerProxy(sab);
sp.sale();
}
}
特殊例子AOP(代理就是实现AOP的主要技术)
代理类图
如果采用工厂模式和配置文件进行管理,则不需要修改客户端程序,
在配置文件中配置 是否使用目标类、还是代理类,这样以后容易切换。
譬如:想要日志功能时,就配置代理类,否则配置目标类。
销售例子
package com.proxy;
public interface Saleable {
public void sale();
}
package com.proxy;
public class SellerProxy implements Saleable{
private Saleable seller;
public SellerProxy(Saleable seller)
{
this.seller = seller;
}
@Override
public void sale() {
System.out.println("销售前");
this.seller.sale();
System.out.println("销售后");
}
}
package com.proxy;
public class Seller implements Saleable{
public void sale()
{
System.out.println("销售中");
}
public static void main(String[] args) {
Saleable sab = new Seller();
Saleable sp = new SellerProxy(sab);
sp.sale();
}
}
特殊例子AOP(代理就是实现AOP的主要技术)