代理模式实例订单系统

简介: 代理模式实例订单系统

一旦订单被创建,只有订单的创建人才可以修改订单中的数
据,其他人则不能修改。
三个属性:产品名称、订购数量、订购人
在这里插入图片描述
成员接口

package daili;

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

}

Order

package daili;

public class Order implements OrderApi {
    private String productName;
    private int orderNum;
    private String orderUser;
    
    public Order(String productName, int orderNum, String orderUser) {
        this.productName = productName;
        this.orderNum = orderNum;
        this.orderUser = orderUser;
    }

    public Order() {}

    @Override
    public String getProductName() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public void setProductName(String productName, String user) {
        // TODO Auto-generated method stub

    }

    @Override
    public int getOrderNum() {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public void setOrderNum(int orderNum, String user) {
        // TODO Auto-generated method stub

    }

    @Override
    public String getOrderUser() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public void setOrderUser(String orderUser, String user) {
        // TODO Auto-generated method stub

    }

}

OrderProxy

package daili;

public class OrderProxy implements OrderApi {
    private Order order=null;
    
    public OrderProxy(Order order) {
        this.order = order;
    }

    @Override
    public String getProductName() {
        // TODO Auto-generated method stub
        return null;
    }

    @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() {
        // TODO Auto-generated method stub
        return 0;
    }

    @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() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public void setOrderUser(String orderUser, String user) {
        if(user!=null && user.equals(this.getOrderUser())) {

            order.setOrderUser(orderUser, user);
    }else {
            System.out.println("对不起" +user+",您无权修改订单中的订购人");
    }
}

    }

测试

package daili;

public class test {

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

    }

}
目录
相关文章
|
6月前
|
设计模式 SQL 数据库
淘东电商项目(61) -聚合支付(基于模板方法设计模式管理支付回调)
淘东电商项目(61) -聚合支付(基于模板方法设计模式管理支付回调)
43 0
|
6天前
|
设计模式 Java 关系型数据库
Java设计模式--创建模式工厂--用披萨订购案例 详细讲解三种工厂模式
Java设计模式--创建模式工厂--用披萨订购案例 详细讲解三种工厂模式
|
6天前
|
设计模式 安全 Java
Java设计模式—单例模式的实现方式和使用场景
那么为什么要有单例模式呢?这是因为有的对象的创建和销毁开销比较大,比如数据库的连接对象。所以我们就可以使用单例模式来对这些对象进行复用,从而避免频繁创建对象而造成大量的资源开销。
65 1
|
6天前
|
Java
代理模式【静态代理和动态代理实现业务功能扩展】
代理模式【静态代理和动态代理实现业务功能扩展】
|
6月前
|
设计模式 SQL 数据库
淘东电商项目(62) -聚合支付(基于模板方法设计模式管理支付回调-支付宝)
淘东电商项目(62) -聚合支付(基于模板方法设计模式管理支付回调-支付宝)
35 0
|
10月前
|
设计模式 XML C++
设计模式之单例、工厂、发布订阅者模式
保证一个类仅有一个实例,并提供一个该实例的全局访问点
|
存储 设计模式
【设计模式】【第四章】【订单状态流转】【状态模式 + 享元模式+模板方法模式】
【设计模式】【第四章】【订单状态流转】【状态模式 + 享元模式+模板方法模式】
|
设计模式 缓存 Java
Java设计模式之秒杀系统
Java设计模式之秒杀系统
原型模式实例订单处理系统
原型模式实例订单处理系统
93 0
原型模式实例订单处理系统