zoukankan      html  css  js  c++  java
  • Proxy 代理模式

     

        注:代理模式是结构型设计模式,为其他对象提供一种代理以控制对这个对象的访问。

     

    在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。

     

    假设需要一个发送消息的功能,现在有两种实现方式,邮件和短信。而客户端不适合直接调用这两种实现方式,需要通过一个代理对象,其java代码实现如下

     

    1,发送消息功能接口

     

    package com.pattern.structure.proxy;
    
     
    
    public interface Notice {
    
     
    
    public void send() ;
    
    }

     

     

    2,邮件实现方式

     

    package com.pattern.structure.proxy;
    
     
    
    public class EmailNotice implements Notice {
    
     
    
    @Override
    
    public void send() {
    
     
    
    System.out.println("email notice send...");
    
    }
    
     
    
    }

     

     

    3,短信实现方式

     

    package com.pattern.structure.proxy;
    
     
    
    public class MessageNotice implements Notice {
    
     
    
    @Override
    
    public void send() {
    
     
    
    System.out.println("message notice send...");
    
    }
    
     
    
    }

     

     

    4,消息发送代理类

     

    package com.pattern.structure.proxy;
    
     
    
    public class Proxy implements Notice{
    
     
    
    private Notice message ;
    
     
    
    public Proxy(Notice notice) {
    
    this.message = notice ;
    
    }
    
     
    
    @Override
    
    public void send() {
    
     
    
    message.send(); 
    
    }
    
     
    
    }

     

     

    5,客户端程序

     

    package com.pattern.structure.proxy;
    
     
    
    public class Client {
    
     
    
    public static void main(String[] args) {
    
     
    
    MessageNotice message = new MessageNotice() ;
    
     
    
    Proxy proxy = new Proxy(message) ;
    
     
    
    proxy.send(); 
    
    }
    
     
    
    }

     

     

     

      这表明了客户端通过代理程序实现消息发送功能,而真正消息发送的实现者是其他对象,实现了消息发送的代理,对客户端和消息发送者之间进行了解耦。可能这里例子举得不是很合适。

     

    代理模式通用类图

     

     

     

     

     

    ------

      文章只为技术交流学习,若所写有误,请斧正,评论或消息与我,为不误导后来学习的人;若有不小心所写侵权,请告知我;若转载,请注明出处。

     

     

    松下问童子,言师采药去。 只言此山中,云深不知处。
  • 相关阅读:
    204. Count Primes (Integer)
    203. Remove Linked List Elements (List)
    202. Happy Number (INT)
    201. Bitwise AND of Numbers Range (Bit)
    200. Number of Islands (Graph)
    199. Binary Tree Right Side View (Tree, Stack)
    198. House Robber(Array; DP)
    191. Number of 1 Bits (Int; Bit)
    190. Reverse Bits (Int; Bit)
    189. Rotate Array(Array)
  • 原文地址:https://www.cnblogs.com/sten/p/3349916.html
Copyright © 2011-2022 走看看