标签:代理模式
考虑实现一个订单系统:
一旦订单被创建,只有订单的创建人才可以修改订单中的数据,其他人则不能修改。
三个属性:产品名称、订购数量、订购人
public interface OrderAPI { public String getProductionName() ;//得到产品名称 public void setProductionName(String productionName,String BuilderName) ;//设置<span style="font-family: Arial, Helvetica, sans-serif;">产品名称</span> public int getCount();//订购数量 public void setCount(int count,String BuilderName); public String getBuildName();//订购人 public void setBuildName(String buildName,String BuilderName); }
package com.cmc; public class Order implements OrderAPI{ private String productionName; private int count; private String buildName; public Order(String productionName, int count, String buildName) { super(); this.productionName = productionName; this.count = count; this.buildName = buildName; } public String getProductionName() { return productionName; } public void setProductionName(String productionName,String BuilderName) { this.productionName = productionName; } public int getCount() { return count; } public void setCount(int count,String BuilderName) { this.count = count; } public String getBuildName() { return buildName; } public void setBuildName(String buildName,String BuilderName) { this.buildName = buildName; } }
package com.cmc; public class OrderProdxy implements OrderAPI { Order order = null; public OrderProdxy(Order order) { super(); this.order = order; } public String getBuildName() { return order.getBuildName(); } public int getCount() { return order.getCount(); } public String getProductionName() { return order.getProductionName(); } public void setBuildName(String buildName, String BuilderName) { if(BuilderName!=null&&BuilderName.equals(order.getBuildName())){ order.setBuildName(buildName, order.getBuildName()); System.out.println("成功将订购人修改为"+buildName+"!"); } else System.out.println("不是订单创建人,无法修改订购人!"); } public void setCount(int count, String BuilderName) { if(BuilderName!=null&&BuilderName.equals(order.getBuildName())){ order.setCount(count, BuilderName); System.out.println("成功将订购数量修改为"+count+"!"); } else System.out.println("不是订单创建人,无法修改订单数量!"); } public void setProductionName(String productionName, String BuilderName) { // TODO Auto-generated method stub if(BuilderName!=null&&BuilderName.equals(order.getBuildName())){ order.setProductionName(productionName, BuilderName); System.out.println("成功将订购产品修改为"+productionName+"!"); } else System.out.println("不是订单创建人,无法修改产品名称!"); } }
客户端测试一下
package com.cmc; public class Client { public static void main(String[] args){ Order o = new Order("设计模式",100,"张三"); OrderProdxy o1 = new OrderProdxy(o); o1.setBuildName("王五", "李四"); o1.setBuildName("王五", "张三"); o1.setBuildName("李四", "王五"); } }
标签:代理模式
原文地址:http://blog.csdn.net/u014293306/article/details/45978779