设计模式---代理模式

前段时间一直比较忙、没有什么功夫去写博客、现在闲下来了、就先写一个把、

这次要说的是代理模式、简单来说、代理就是一个中间商、比如卖电脑配件的、所有的配件厂家都是直接给代理商又代理商来进行销售的、我们只要问代理商去买就可以了、说白了就是客户不直接与某些对象引用,由专门的代理来作为一个中介来为客户与厂商双方服务,去掉客户不能看见的和增加客户需要的这样

代理模式主要有三个要素

1.抽象主题角色:这是代理商和厂商共同的部分

2.具体主题角色:这就是厂商的角色他需要继承抽象主题角色

3.代理商主题角色:这就是代理商了他也要继承抽象主题角色,当然他还要提供一些别的服务


我们就拿卖电脑配件为例

抽象主题角色

/**
 * 
 */
package com.model.proxy;


public interface IPCSell {
	//抽象主题角色
	//电脑配件代理商和电脑配件生产商都有一个共同的东西就是卖配件
	public Object sell();
}

具体抽象主题角色

/**
 * 
 */
package com.model.proxy;


public class PCFactory implements IPCSell {
	
	
	//这就是真是主题角色配件工厂了
	/* (non-Javadoc)
	 * @see com.model.proxy.IPCSell#sell()
	 */
	@Override
	public Object sell() {
		System.out.println("真是主题角色PCFactory给调用了");
		return new Object();
	}

}
代理主题角色


/**
 * 
 */
package com.model.proxy;

import java.util.HashMap;
import java.util.Map;


public class PCProxy implements IPCSell {
	//代理主题角色他要实现接口还要持有厂商的引用
	
	//厂商引用
	private PCFactory pcFactory;
	
	//他需要拿到货后赚钱所以要加点价钱卖出去
	//价格表咯
	private Map<Object, Object> priceMap = new HashMap<Object, Object>();

	/* (non-Javadoc)
	 * @see com.model.proxy.IPCSell#sell()
	 */
	@Override
	public Object sell() {
		//返回的是商品咯
		Object obj = pcFactory.sell();
		//返回他的卖家咯
		return priceMap.get(obj);
	}
	
	
	//当然也有最基本的客户来询问价钱什么的
	public Object enquirePrice(Object object){
		//当然真实情况会价格会高一点啊
		return priceMap.get(object);
	}

}


调用一下

 public static void main(String agrs[])  
    {  
    	IPCSell sell = new PCProxy();  
         sell.sell();  
    }  

总结、

代理模式可以协调调用者和被调用者、降低系统的耦合度,提高代码的利用率



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值