设计模式 - 静态代理模式
package com.Proxy; /** * 静态代理: 抽象角色(公共接口) * * @author DW * */ public interface Order { // 所有实现Order接口的类来重写PlaceOrder方法 public void PlaceOrder(); }
package com.Proxy; /** * 静态代理: 真实角色(用户) * * @author DW * */ public class User implements Order { @Override public void PlaceOrder() { System.out.println("用户下订单"); } }
package com.Proxy; /** * 静态代理: 代理角色(代理) * * @author DW * */ public class Agents implements Order { private User user; @Override public void PlaceOrder() { // 可以在此处添加代理操作 if (null == user) { this.user = new User(); } // 调用用户(真实角色)PlaceOrder方法 this.user.PlaceOrder(); // 可以在此处添加代理操作 } }
package com.Proxy; /** * 静态代理: 测试 * * @author DW * */ public class ProxyTest { public static void main(String[] args) { /** * 利用多态特性, order指向代理的引用, 当调用PlaceOrder方法时, * 实际是调用的Agents类的PalceOrder方法, 该方法内部实际生成了 * 一个真实角色的引用, 并调用该真实角色类的PlaceOrder方法,所以 * 最终打印:"用户下订单" */ Order order = new Agents(); order.PlaceOrder(); // 用户下订单 } }