核心思想:把要真正完成的任务放在一个接口里,定义两个子类实现这个接口,其中一个子类负责真实完成这个任务,另一个子类辅助实现这个任务。
例如:买电脑
买电脑是我们要完成的任务,买电脑包括生产电脑、去店里买、买完电脑的售后服务,但是真正的任务是买到电脑,生产电脑和售后是帮助我们我们买到电脑,所以这两个步骤是辅助业务。
interface ISubject{
//任务:买电脑
public void buyComputer();
}
class RealSubject implements ISubject{
public void buyComputer(){
System.out.println("2.买一台苹果电脑!");
}
}
class ProxySubject implements ISubject{
//真实的业务操作
private ISubject subject;
public ProxySubject(ISubject subject) {
this.subject = subject;
}
public void createComputer(){
System.out.println("1.生产苹果电脑!");
}
public void afterSale(){
System.out.println("3.苹果电脑售后服务!");
}
//买电脑的实现过程
public void buyComputer(){
this.createComputer();
this.subject.buyComputer();
this.afterSale();
}
}
//电脑放进超市里
class Supermarket{
public static ISubject getInstance(){
return new ProxySubject(new RealSubject());
}
}
public class Test{
public static void main(String[] args) {
ISubject subject = Supermarket.getInstance();
subject.buyComputer();
}
}