前段时间一直比较忙、没有什么功夫去写博客、现在闲下来了、就先写一个把、
这次要说的是代理模式、简单来说、代理就是一个中间商、比如卖电脑配件的、所有的配件厂家都是直接给代理商又代理商来进行销售的、我们只要问代理商去买就可以了、说白了就是客户不直接与某些对象引用,由专门的代理来作为一个中介来为客户与厂商双方服务,去掉客户不能看见的和增加客户需要的这样
代理模式主要有三个要素
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();
}
总结、
代理模式可以协调调用者和被调用者、降低系统的耦合度,提高代码的利用率