• 代理模式


    代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。

    代理模式是对象间的间接通信,间接通信可以给出较低的耦合关系,较强的合作关系,以及微妙的结构和易于复用的设计架构。

     

    代理模式的结构:


    抽象主题角色:声明了真实主题和代理主题的共同接口,这样一来在任何可以使用真实主题的地方都可以使用代理主题。

    代理主题角色:代理主题角色内部有对真实主题的易用,从而可以在任何时候操作真实主题对象。

    真实主题角色:定义了代理角色所代表的真实对象

     

    红酒代理商和红酒厂商都有销售红酒的职能

      ** 

      *抽象主题角色,定义了真实角色和代理角色的公共接口 

      */  

      public interface SellInterface{  

           public Object sell();  

      }  

     

    /** 

    *真实主题角色,这里指红酒工厂角色,它实现了SellInterface接口 

    */  

    public class RedWineFactory implements SellInterface{  

         public Object sell(){  

             System.out.println("真实主题角色RedWineFactory 被调用了");  

             return new Object();  

         }  

    }  

    /** 

    *代理主题角色,这里指红酒代理商.它除了也要实现了sellInterface接口外,还持有红酒 

    *厂商RedWineFactory 对象的引用,从而使它能在调用真实主题前后做一些必要处理

    */  

    public class RedWineProxy implements SellInterface{  

         //持有一个RedWineFactory对象的引用  

          private RedWineFactory redWineFactory;  

      

         //销售总量  

          private static int sell_count = 0;  

      

         public Object sell(){  

             if(checkUser()){//在通过代理主题角色,我们可以在真实主题角色被调用前做一些诸如权限判断的事情  

                 Object obj = redWineFactory.sell();  

                 count ++;//同样,在调用后我们也可以执行一些额外的动作.  

                 return obj ;  

             }else{  

                 throw new RuntimeException();  

             }      }  

     

         protected boolean checkUser(){  

                //do something  

                return true;  

         }  

    }  

    public static void main(String agr[]) {  

         SellInterface sell = new RedWineProxy();  

         sell.sell();  

    }  

     

  • 相关阅读:
    复利计算器2.01
    复利计算器2.0
    0429团队3.0
    0428 团队项目合作2.0作业
    "数学口袋精灵"bug
    操作系统-实验2
    博客评论
    复利计算升级
    0408 结对合作
    0406复利计算5.0
  • 原文地址:https://www.cnblogs.com/jinzhengquan/p/1934295.html
Copyright © 2020-2023  润新知