3.代理设计模式(重点)
3.1 定义:两个子类共同实现一个接口,其中一个子类负责真实业务实现,另外一个子类完成辅助真实业务主题的操作
3.2 本质:所有的真实业务操作都会有一个与之辅助的工具类(功能类)共同完成
3.3 应用:在JavaEE中有着广泛的应用。EJB、WebService,Spring等技术都是代理模式的应用
真实业务的核心功能是买电脑,增加代理类将其拓展为生产电脑、买电脑、售后服务。
代码实现:
/*
代理模式
*/
public class TestProxy{
public static void main(String[] args){
ISubject isubject = Factory.getInstance();
isubject.buyComputer();
}
}
interface ISubject{
void buyComputer();//核心功能是买电脑
}
class RealSubject implements ISubject{
public void buyComputer(){
System.out.println("买一台外星人电脑");
}
}
class ProxySubject implements ISubject{
private ISubject isubject;
public ProxySubject(ISubject isubject){
this.isubject = isubject;
}
public void createComputer(){
System.out.println("生产外星人电脑");
}
public void afterSale(){
System.out.println("外星人售后服务");
}
public void buyComputer(){
this.createComputer();
this.isubject.buyComputer();//调用真实的业务
this.afterSale();
}
}
class Factory{
public static ISubject getInstance(){
return new ProxySubject(new RealSubject());
}
}
运行结果: