梦幻之旅

DEBUG - 天道酬勤

   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  671 随笔 :: 6 文章 :: 256 评论 :: 0 Trackbacks
代理模式
    为其它的对象提供一种代理,以控制对这个对象的访问.
     Proxy代理模式是一种结构型设计模式,主要解决的问题是:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层。
代理模式的组成部份:
    1.抽象主题 是一个接口.
    2.具体主题  要实现抽象主题接口
    3.代理主题 要实现抽象主题接口,含有一个主题接口声明的变量
各组成部份之间的关系:

例子:
1.接口
package proxy;

/**
 * <ul>
 * <li>Title:[SellWine]</li>
 * <li>Description: [卖酒接口]</li>
 * <li>Copyright 2009 Upengs Co., Ltd.</li>
 * <li>All right reserved.</li>
 * <li>Created by [Huyvanpull] [2011-8-2]</li>
 * <li>Midified by [modifier] [modified time]</li>
 * </ul>
 * 
@version 1.0  
 
*/

public interface SellWine
{   
    
public void sell();
}


2.实现类
package proxy;

/**
 * <ul>
 * <li>Title:[WineFactory]</li>
 * <li>Description: [type of functional description]</li>
 * <li>Copyright 2009 Upengs Co., Ltd.</li>
 * <li>All right reserved.</li>
 * <li>Created by [Huyvanpull] [2011-8-2]</li>
 * <li>Midified by [modifier] [modified time]</li>
 * </ul>
 * 
@version 1.0  
 
*/

public class WineFactory implements SellWine
{

    
/* (non-Javadoc)
     * @see proxy.SellWine#sell()
     
*/

    
public void sell()
    
{
        System.out.println(
"wineFactory卖酒.");
    }
   

}


3.代理类
package proxy;

public class WineFactoryProxy implements SellWine
{
    
private WineFactory wineFactory;
    
    
public WineFactoryProxy()
    
{
        wineFactory 
= new WineFactory();
    }

    
/* (non-Javadoc)
     * @see proxy.SellWine#sell()
     
*/

    
public void sell()
    
{
        wineFactory.sell();
    }
   

}


4.测试类
package proxy;

public class Test
{   
    
public static void main(String[] args)
    
{
        WineFactoryProxy wineFactoryProxy 
= new WineFactoryProxy();
        wineFactoryProxy.sell();
    }

}


优点:代理模式可以屏比用户真正请求的对象,使用户程序和真正对象之间解耦.
posted on 2011-08-02 15:36 HUIKK 阅读(255) 评论(0)  编辑  收藏 所属分类: Design Patterns

只有注册用户登录后才能发表评论。


网站导航: