`

静态代理模式Demo

 
阅读更多
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();
	}
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics