署理模式学习

代理模式学习

 

代理模式所涉及的角色有:

抽象主题角色:声明了真实主题与代理主题的共同接口(共有的特性)

代理主题角色:含有对真实主题角色的引用(操作真实主体对象),代理角色通常在将客户端调用传递给真实主题对象的之前或者之后都会执行某些操作(方法),而不是只单纯的返回真实的对象。

真实主题角色:定义了代理角色所代表的真实对象。

 

 

//抽象的主题角色
abstract class SaleComputer{
	abstract public void SaleComputer();
}

//真实的主题角色(ComputerMaker)
class ComputerMaker extends SaleComputer{
	public void SaleComputer(){
		System.out.println("卖出了一台电脑。。。");
	}
}

//代理的主题角色(ComputerProxy)
class ComputerProxy extends SaleComputer{
	ComputerMaker cm=null;
	public void youHui(){
		System.out.println("我给你优惠....");
	}
	public void giveMouse(){
		System.out.println("我还送你一个鼠标。。。");
	}
	public void SaleComputer(){
		youHui();
		giveMouse();
		if(cm==null){
			cm=new ComputerMaker();
		}
		cm.SaleComputer();
	}
}


public class ProxyDemo {
	public static void main(String[] args) {
		//SaleComputer sc=new ComputerMaker();
		SaleComputer sc=new ComputerProxy();
		sc.SaleComputer();

	}

}