订单系统:
一旦订单被创建, 只有订单的创建人才可以修改订单由的数据,其他人则不能修改。三个属性:产品名称、订购数量、订购人。
定义订单的接口:
public interface OrderApi {
public String getProductName();
public void setProductName(String productName,String user);
public int getOrderNum();
public void setOrderNum(int orderNum,String user);
public String getOrderUser();
public void setOrderUser(String orderUser,String user);
}
真实的用户:
public class Order implements OrderApi {
private String productName;
private int orderNum;
private String orderUser;
public Order(String productName, int orderNum, String orderUser) {
super();
this.productName = productName;
this.orderNum = orderNum;
this.orderUser = orderUser;
}
@Override
public String getProductName() {
return productName;
}
@Override
public void setProductName(String productName, String user) {
this.productName=productName;
}
@Override
public int getOrderNum() {
return orderNum;
}
@Override
public void setOrderNum(int orderNum, String user) {
this.orderNum=orderNum;
}
@Override
public String getOrderUser() {
return orderUser;
}
@Override
public void setOrderUser(String orderUser, String user) {
this.orderUser=orderUser;
}
}
代理用户:
public class OrderProxy implements OrderApi {
private Order order=null;
public OrderProxy(Order real) {
this.order = real;
}
@Override
public String getProductName() {
return this.order.getProductName();
}
@Override
public void setProductName(String productName, String user) {
if(user!=null&&user.equals(this.getOrderUser())) {
order.setProductName(productName, user);
}
else {
System.out.println("对不起"+user+", 您无权修改订单中的产品名称");
}
}
@Override
public int getOrderNum() {
return this.order.getOrderNum();
}
@Override
public void setOrderNum(int orderNum, String user) {
if(user!=null&&user.equals(this.getOrderUser())) {
order.setOrderNum(orderNum, user);
}
else {
System.out.println("对不起"+user+", 您无权修改订单中的订购数量");
}
}
@Override
public String getOrderUser() {
return this.order.getOrderUser();
}
@Override
public void setOrderUser(String orderUser, String user) {
if(user!=null&&user.equals(this.getOrderUser())) {
order.setOrderUser(orderUser, user);
}
else {
System.out.println("对不起" +user+",您无权修改订单中的订购人");
}
}
public String toString() {
return "ProductName="+this.getProductName()+",orderNum="+
this. getOrderNum()+",orderUser="+this .getOrderUser();
}
}
客户端:
public class Client {
public static void main(String[] args) {
OrderApi order=new OrderProxy(new Order("设计模式",100,"张三"));
order.setOrderNum(123, "李四");
System.out.println("李四修改后订单记录没有变化: "+order);
order.setOrderNum(123,"张三");
System.out.println("张三修改后,订单记录: "+order);
}
}