码迷,mamicode.com
首页 > 编程语言 > 详细

JAVA设计模式(3)----代理模式

时间:2014-05-28 13:15:16      阅读:295      评论:0      收藏:0      [点我收藏+]

标签:style   c   class   blog   code   java   

 1.  什么是代理模式?Proxy Pattern

     代理模式定义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。

     通俗的讲,代理模式就是我很忙没空理你,你要想找我可以先找我的代理人,代理人和被代理人继承同一个接口。代理人虽然不能干活,但是被代理的人可以干活。

    这个例子中有水浒传中的这么几个人:名垂青史的潘金莲,王婆,西门大官人。西门庆想要找潘金莲,需要找王婆做代理。首先定义一个接口:KindWomen,潘金莲和王婆是同一种女人,接口里面有两个功能:

     

bubuko.com,布布扣
package Proxy;

public interface KindWomen {
     public void PaoMeiYan();
     
     public void HappyWithMan();
}
bubuko.com,布布扣

   定义潘金莲类,实现KindWomen接口

   

bubuko.com,布布扣
package Proxy;

public class PanJinLian implements KindWomen {
        public void PaoMeiYan(){
              System.out.println("潘金莲抛媚眼!");
        }
        
        public void HappyWithMan(){
            System.out.println("潘金莲happy with man……");
        }
}
bubuko.com,布布扣

定义王婆类,同样实现KindWomen接口

bubuko.com,布布扣
package Proxy;

public class WangPo implements KindWomen{
   private KindWomen kindwomen;
   
   public WangPo(){//默认为潘金莲的代理
          
         this.kindwomen=new PanJinLian();
   }
   
   public WangPo(KindWomen kindwomen){
        this.kindwomen=kindwomen;
   }
   
   public void HappyWithMan(){
       this.kindwomen.HappyWithMan();
   }
   
   
   public void PaoMeiYan(){
       this.kindwomen.PaoMeiYan();
   }
      
   
}
bubuko.com,布布扣

西门庆类:

 

bubuko.com,布布扣
package Proxy;

public class XiMenQing {
   public static void main(String[] args) {
       
         WangPo wangPo=new WangPo();
         
         wangPo.HappyWithMan();
         wangPo.PaoMeiYan();
             
         
  }
}
bubuko.com,布布扣

结果:

 bubuko.com,布布扣

再增加和潘金莲一类的女人贾氏

bubuko.com,布布扣
package Proxy;

public class JiaShi  implements KindWomen {
   
      public void HappyWithMan(){
          System.out.println("贾氏happy with man……");
      }
      
      public void  PaoMeiYan(){
            System.out.println("贾氏抛媚眼……");
      }
}
bubuko.com,布布扣

西门勾引贾

bubuko.com,布布扣
package Proxy;

public class XiMenQing {
   public static void main(String[] args) {
       
         WangPo wangPo=new WangPo();
         
         wangPo.HappyWithMan();
         wangPo.PaoMeiYan();
         
         
        JiaShi jiashi=new JiaShi();
         wangPo=new WangPo(jiashi);
         wangPo.HappyWithMan();
         wangPo.PaoMeiYan();
  }
}
bubuko.com,布布扣

bubuko.com,布布扣

JAVA设计模式(3)----代理模式,布布扣,bubuko.com

JAVA设计模式(3)----代理模式

标签:style   c   class   blog   code   java   

原文地址:http://www.cnblogs.com/yaopan007/p/3755118.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!