訂單系統:
一旦訂單被創建, 只有訂單的創建人纔可以修改訂單由的數據,其他人則不能修改。三個屬性:產品名稱、訂購數量、訂購人。
定義訂單的接口:
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);
}
}