代理模式 例题1

订单系统:

一旦订单被创建, 只有订单的创建人才可以修改订单由的数据,其他人则不能修改。三个属性:产品名称、订购数量、订购人。

在这里插入图片描述

定义订单的接口:

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);
	}

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章