设计模式01-代理模式(静态代理)
2017-10-28 13:24
295 查看
代理的理解-以日常生活为例
主体需要客体提供的服务时,代替客体实际提供服务的第三方。举个例子
场景:小明在家楼下的便利店买一瓶可口可乐公司生产的雪碧。 主体:小明 客体:可口可乐公司 服务:卖雪碧 代理:便利店
在我们举例的这个场景中,主体之所以需要向作为客体的便利店来买雪碧,而不是直接从可口可乐公司买,提炼原因:
*** 更好的服务: 1. 从家楼下的便利店买,能节省享受服务带来的时间成本 2. 便利店买雪碧可能可以积分,满一定积分能兑换礼物
程序中代理模式的使用
还是以买雪碧为例1. 先定义雪碧类、以及卖雪碧接口
public class XueBi{ } public interface IXueBiSeller{ public void sellXueBi(); }
2. 可口可乐公司类实现卖雪碧接口
public class COCA_COLA_Corp implements IXueBiSeller{ @Override public void sellXueBi(){ System.out.println("花3天买雪碧"); } }
3. 便利店实现卖雪碧接口
public class Convenience_Store implements IXueBiSeller{ private List<XueBi> xueBiStorageList; @Override public void sellXueBi(){ if(xueBiStorageList == null){ return; } else if(xueBiStorageList.size()>0){ System.out.println("花10分钟买雪碧"); System.out.println("积100分"); }else{ //便利店没有存货了才去可口可乐公司买 new COCA_COLA_Corp().sellXueBi(); } } public void bugXuebi(){ if(xueBiStorageList==null||xueBiStorageList.size()==0){ xueBiStorageList=new ArrayList<Xuebi>(); }else{ for(int i=0;i<100;i++){ xueBiStorageList.add(new XueBi()); } System.out.println("买入100瓶雪碧,当前仓库中存量:"+xueBiStorageList.size()); } } }
4. 客户端
public class Client{ public static void main(String[]args){ IXueBiSeller xueBiSeller= new Convenience_Store(); //提前进好货 xueBiSeller.bugXuebi(); xueBiSeller.sellXueBi(); } }
总结
当小卖部的仓库中,雪碧还有存货的时候,买雪碧本来需要三天,现在10分钟搞定,而且还能积分。
通过相对于客体可口可乐公司,便利店这个代理,确实是给主体提供了更好的服务。
相关文章推荐
- 设计模式(2) 代理模式 静态代理
- java设计模式之四:代理模式 java静态代理和动态代理
- Java设计模式——代理模式(静态代理vs动态代理)
- Java设计模式——静态代理设计模式
- 代理角色java设计模式之静态代理详细介绍
- GOF23设计模式之静态代理模式实现之经典
- java设计模式之静态代理
- 设计模式——代理模式(理解静态代理和动态代理+代码)
- Java设计模式-----Proxy模式(静态代理)
- 【设计模式】静态代理模式详解
- 架构设计之设计模式 (二) 静态代理和动态代理--间接“美”
- 设计模式____代理模式(静态代理,动态代理)
- java设计模式之静态代理
- 设计模式之代理模式(静态代理)
- java设计模式--代理模式(静态代理和动态代理)
- 设计模式- 代理模式 (静态代理 和 动态代理)
- java设计模式-代理模式(静态代理,动态代理)
- 静态代理模式设计
- [转]转个经典的帖子:说故事学设计模式之-Java静态代理模式
- 设计模式:JDK静态代理之Thread/Runnable