代理模式实例订单系统

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

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

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

    }

}
目录
相关文章
|
3月前
|
设计模式 存储 开发者
如何在业务代码中优雅地使用责任链模式
责任链模式是一种行为设计模式,本文从责任链模式的定义到其优雅之处、合适的应用场景、应用示例、实现步骤等方面详细讲述了如何在业务代码中优雅的使用责任链模式。
|
5月前
|
设计模式 监控 开发者
在业务代码中如何优雅地使用责任链模式
在日常开发中,随着业务逻辑的复杂性和系统规模的增加,我们开发者往往面临着代码结构混乱、模块间耦合度高等问题,如何保持代码的清晰、可维护和可扩展性成为了一个重要的挑战。为了解决这个问题,我们需要借助一些设计模式来优化代码结构,提高代码的可读性和可维护性,那么责任链模式就是一种非常实用的设计模式,是解决这一问题的有效手段之一,它可以帮助我们优雅地处理业务逻辑中的复杂请求,该模式通过构建一系列处理者对象,并将它们连接成一条链,使得请求可以在这些处理者之间传递,直到被恰当处理。那么接下来,我们将探讨如何在业务代码中优雅地使用责任链模式,欢迎在评论区留言交流。
74 5
在业务代码中如何优雅地使用责任链模式
|
4月前
|
设计模式 算法
交易链路设计原则&模式问题之中介者(Mediator)方法设计模式是什么,如何解决
交易链路设计原则&模式问题之中介者(Mediator)方法设计模式是什么,如何解决
|
4月前
|
移动开发
交易链路设计原则&模式问题之在订单管理系统中,doOp接口实现多种按钮操作,如何解决
交易链路设计原则&模式问题之在订单管理系统中,doOp接口实现多种按钮操作,如何解决
|
6月前
|
设计模式 缓存 Java
如何在业务代码中优雅地使用责任链模式?
【5月更文挑战第26天】责任链模式(Chain of Responsibility Pattern)是一种设计模式,用于处理请求的发送者和接收者之间的解耦。
110 1
|
设计模式 SQL 数据库
淘东电商项目(61) -聚合支付(基于模板方法设计模式管理支付回调)
淘东电商项目(61) -聚合支付(基于模板方法设计模式管理支付回调)
81 0
|
设计模式 SQL 数据库
淘东电商项目(62) -聚合支付(基于模板方法设计模式管理支付回调-支付宝)
淘东电商项目(62) -聚合支付(基于模板方法设计模式管理支付回调-支付宝)
64 0
|
设计模式 Java 调度
JAVA设计模式15:命令模式,将请求封装为对象,达到读写分离的效果
JAVA设计模式15:命令模式,将请求封装为对象,达到读写分离的效果
113 0
|
存储 设计模式
【设计模式】【第四章】【订单状态流转】【状态模式 + 享元模式+模板方法模式】
【设计模式】【第四章】【订单状态流转】【状态模式 + 享元模式+模板方法模式】
125 0