注:代理模式是结构型设计模式,为其他对象提供一种代理以控制对这个对象的访问。
在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。
假设需要一个发送消息的功能,现在有两种实现方式,邮件和短信。而客户端不适合直接调用这两种实现方式,需要通过一个代理对象,其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(); } }
这表明了客户端通过代理程序实现消息发送功能,而真正消息发送的实现者是其他对象,实现了消息发送的代理,对客户端和消息发送者之间进行了解耦。可能这里例子举得不是很合适。
代理模式通用类图
------
文章只为技术交流学习,若所写有误,请斧正,评论或消息与我,为不误导后来学习的人;若有不小心所写侵权,请告知我;若转载,请注明出处。