代理模式:代购,代练
特点:一个接口,两个子类,其中一个子类负责完成真实业务,另一个子类辅助之
代理类中:
1.需要传入真实业务对象,代理类需要知道真实客户是谁,完成真实业务是由真实对象来完成,代理制需要辅助之(掏钱是客户,并不是代购)通过构造方法传入(下订单时,商家已经知道客户是谁)
2.传入的是接口对象,只要是接口中定义的业务,代理类都可以进行代理,(只要是买电脑,代购都可以处理,入传入真实类,则只能导购真实品牌电脑)
代码如下:
interface Isubject{
//买电脑
void buyComputer();
}
//真实主题类,真正要买电脑的对象
class RealSubject implements Isubject{
public void buyComputer(){
System.out.println("买一台mac电脑,付钱");
}
}
//代理类需要传入一个真实用户
class RealxySubject implements Isubject{
private Isubject realSubject;
public RealxySubject(Isubject realSubject){
this.realSubject=realSubject;
}
public void beforBuyconputer(){
System.out.println("去美国排队");
}
public void buyComputer(){
this.beforBuyconputer();
//真实业务,买电脑,掏钱
this.realSubject.buyComputer();
this.afterBuyconputer();
}
public void afterBuyconputer(){
System.out.println("邮寄回中国");
}
}
public class Test322{
public static void main(String [] args){
//下订单
Isubject subject = new RealxySubject(new RealSubject());
subject.buyComputer();//通过代理类的构造方法,将真实对象传进去
}
}