特点
两个子类共同实现一个接口,其中一个子类负责真实业务实现,另一个子类完成辅助真实业务主题的操作。
import java.lang.reflect.Proxy;
import java.util.Scanner;
import java.util.concurrent.PriorityBlockingQueue;
import javax.security.auth.Subject;
interface ISubjuct {
void buyComputer();
}
// 真实主题类
class RealSubjectImpl implements ISubjuct {
public void buyComputer() {
System.out.println("买一台 Macbook Pro");
}
}
// 代理类
class ProxySubjectImpl implements ISubjuct {
private ISubjuct realSubject;
// 构造注入,注入真实主题类
public ProxySubjectImpl(ISubjuct realISubjuct){
this.realSubject = realISubjuct;
}
public void beforeSubject() {
System.out.println("去银行取钱,排队");
}
public void buyComputer() {
this.beforeSubject();
this.realSubject.buyComputer();
this.afterSubject();
}
public void afterSubject() {
System.out.println("装各种软件,开始coding ......");
}
}
public class Test {
public static void main(String[] args) {
ISubjuct subject = new ProxySubjectImpl(new RealSubjectImpl());
subject.buyComputer();
}
}