两个子类共同实现一个接口,其中一个子类负责真实业务实现,另外一个子类完成辅助真实业务的操作
对应代码实现代理模式如下:
interface ISubject{
public void buyComputer();
}
class RealSubject implements ISubject{
public void buyComputer(){
System.out.println("买外星人电脑");
}
}//负责真实业务
class ProxySubject implements ISubject{
private ISubject subject;
public ProxySubject(ISubject subject){
this.subject = subject;
}//构造方法
public void produceComputer(){
System.out.println("生产外星人电脑");
}
public void afterSale(){
System.out.println("电脑售后");
}
public void buyComputer(){
this.produceComputer();//真实操作前准备
this.subject.buyComputer();//调用真实业务
this.afterSale();//操作后收尾
}
}//辅助业务
class Factory{
public static ISubject getInstance(){
return new ProxySubject(new RealSubject());
}
}
public class Test {
public static void main(String[] args) {
ISubject s = Factory.getInstance();
s.buyComputer();
}
}
代理模式的特点:所有的真实业务操作都会有一个辅助功能类共同协作完成.