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

}

 

}

 

 

 

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

 

代理模式通用类图

 

 

 

 

 

------

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

 

 

松下问童子,言师采药去。 只言此山中,云深不知处。
原文地址:https://www.cnblogs.com/sten/p/3349916.html