package com.xcl.proxy;
//抽象主题角色
abstract class SaleComputer {
abstract public void saleComputer();
}
//真实的主题角色(ComputerMaker)
//必须继承抽象主题角色
class ComputerMaker extends SaleComputer {
@Override
public void saleComputer() {
System.out.println("卖出了一台电脑 ....");
}
}
//代理的主题角色(ComputerProxy)
//必须继承抽象主题角色
class ComputerProxy extends SaleComputer {
//必须含有对真实主题的引用
ComputerMaker cm = null;
//前置通知
public void beforAdvice() {
System.out.println("你买我电脑,我给你85折优惠!!!");
System.out.println("还送你一个无线鼠标!!");
}
@Override
public void saleComputer() {
//前置通知
beforAdvice();
if (cm == null) {
cm = new ComputerMaker();
}
cm.saleComputer();
//后置通知
afterAdvice();
}
//后置通知
public void afterAdvice() {
System.out.println("2个月内免费包换,2年内免费包维修,5年内电话上门服务!!!");
}
}
public class ProxyDemo {
public static void main(String[] args) {
SaleComputer sc = new ComputerProxy();
sc.saleComputer();
}
}