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(); 
    
    }
    
     
    
    }

     

     

     

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

     

    代理模式通用类图

     

     

     

     

     

    ------

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

     

     

    松下问童子,言师采药去。 只言此山中,云深不知处。
  • 相关阅读:
    学习进度(6)
    学习进度(5)
    学习进度(4)
    学习进度(第十周)
    学习进度(第九周)
    关于返回一个整数数组中最大子数组的和的问题(续03)
    学习进度(第八周)
    代码大全阅读笔记03
    NABCD分析——生活日历
    学习进度(第七周)
  • 原文地址:https://www.cnblogs.com/sten/p/3349916.html
Copyright © 2011-2022 走看看