【设计模式】代理模式 Proxy

原创
2017/06/15 15:38
阅读数 31

代理模式

要素:

    1:代理者 (接活的)

    2:被代理者  (干活的)

    3:约束代理者和被代理者行为的接口。  (接活的应该知道干活的都能干什么。。。)

 

描述:

    1:代理者和被代理者应实现一个共同的接口

    2:被代理者实现具体功能

    3:代理者内部持有行为接口作为依赖,在被初始化时默认一个接口实现类,或者注入一个行为接口实现类。代理者通过接口实现的所有行为都由内部持有的依赖进行操作。

 

简单例子:

package ProxyPattern;

/**    
 * @Title: RepairPhone.java  
 * @Package ProxyPattern  
 * @Description: 修理手机的行为接口
 * @author SUNF
 * @date 2017年6月15日  下午3:25:06
 *  
 */
public interface RepairPhone {
	
	/**  
	 * @Title: repair  
	 * @Description: 修理行为    
	 */
	void repair();
	
	
	int sayMoney();
}

 

package ProxyPattern;

/**    
 * @Title: XiaoWang.java  
 * @Package ProxyPattern  
 * @Description: 手机的实际修理者(被代理者)
 * @author SUNF
 * @date 2017年6月15日  下午3:38:45
 *  
 */
public class XiaoWang implements RepairPhone{

	@Override
	public void repair() {
		System.out.println("小王正在给客户修手机");
		
	}

	@Override
	public int sayMoney() {
		System.out.println("(小王:屏碎了:130!全国最低价)");
		return 130;
	}

}
package ProxyPattern;

/**    
 * @Title: GangZi.java  
 * @Package ProxyPattern  
 * @Description: 刚子是一个二道贩子,对外宣布自己也可以修手机
 * @author SUNF
 * @date 2017年6月15日  下午3:30:55
 *  
 */
public class GangZi implements RepairPhone{
	 //刚子其实并不会修手机,但是它能找到修手机的人
	private RepairPhone repairPhone; 
	
	public GangZi(){
		//默认情况下,刚子去找小王修理
		this.repairPhone = new XiaoWang();
	}
	
	public GangZi(RepairPhone repairPhone){
		//如果客户有指定修理师傅的要求,也可以满足
		this.repairPhone = repairPhone;
	}

	@Override
	public void repair() {
		//小王实际不修理手机。
		repairPhone.repair();
		
	}

	@Override
	public int sayMoney() {
		//但是它耍了个心眼,把小王的报价翻了一番。
		int money = repairPhone.sayMoney();
		return money * 2;
	}

}
package ProxyPattern;

public class Test {

	public static void main(String[] args) {
		System.out.println("碎屏了,找一个修理手机的!");
		GangZi g = new GangZi();
		System.out.println("多少钱?");
		System.out.println("刚子:" + g.sayMoney());
		
		System.out.println("好吧,你修理吧");
		System.out.println("实际上刚子把手机给了小王");
		g.repair();
		System.out.println("刚子:净赚130");
		

	}

}

运行结果:

碎屏了,找一个修理手机的!
多少钱?
(小王:屏碎了:130!全国最低价)
刚子:260
好吧,你修理吧
实际上刚子把手机给了小王
小王正在给客户修手机
刚子:净赚130

 

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部