[原创]设计模型探索O1-proxy parttern之桃代李疆

[原创]设计模型探索O1-proxy parttern之桃代李疆
代理模式
    为其它的对象提供一种代理,以控制对这个对象的访问.
     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();
    }

}


优点:代理模式可以屏比用户真正请求的对象,使用户程序和真正对象之间解耦.

你可能感兴趣的:([原创]设计模型探索O1-proxy parttern之桃代李疆)