静态代理模式,实现两个子类:代理子类、真实业务子类。
1 package com.proxy.demo; 2 3 public class SimpleProxy { 4 public static void main(String[] args) { 5 IMessage msg = new MessageProxy(new MessageReal()); 6 msg.send(); 7 } 8 } 9 10 interface IMessage{ 11 public void send(); 12 } 13 class MessageReal implements IMessage{ 14 public void send() { 15 System.out.println("【消息发送】www.proxy.com"); 16 } 17 } 18 class MessageProxy implements IMessage{ 19 private IMessage message; 20 public MessageProxy(IMessage message) { 21 this.message = message; 22 } 23 public boolean connect() { 24 System.out.println("【消息代理】进行消息通道连接"); 25 return true; 26 } 27 public void send() { 28 if(connect()) { 29 this.message.send(); 30 this.close(); 31 } 32 } 33 public void close() { 34 System.out.println("【消息代理】消息通道连接关闭"); 35 } 36 }
运行结果:
【消息代理】进行消息通道连接
【消息发送】www.proxy.com
【消息代理】消息通道连接关闭
静态代理模式缺点:
1.一个代理类只能为一个接口服务;
2.客户端的接口与具体的子类产生耦合。
在实际开发中,最好引入工厂模式进行代理对象的获取。