代理模式实例订单系统

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

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

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

    }

}
目录
相关文章
|
8月前
|
消息中间件 RocketMQ 微服务
分布式事物【库存微服务业务层实现、实现充值微服务、充值微服务之业务层实现、账户微服务之业务层实现】(九)-全面详解(学习总结---从入门到深化)(下)
分布式事物【库存微服务业务层实现、实现充值微服务、充值微服务之业务层实现、账户微服务之业务层实现】(九)-全面详解(学习总结---从入门到深化)
73 0
|
6月前
|
负载均衡 微服务
微服务06----Eureka注册中心,微服务的两大服务,订单服务和用户服务,订单服务需要远程调用我们的用,户服务,消费者,如果环境改变,硬编码问题就会随之产生,为了应对高并发,我们可能会部署成一个集
微服务06----Eureka注册中心,微服务的两大服务,订单服务和用户服务,订单服务需要远程调用我们的用,户服务,消费者,如果环境改变,硬编码问题就会随之产生,为了应对高并发,我们可能会部署成一个集
|
6月前
|
移动开发
交易链路设计原则&模式问题之在订单管理系统中,doOp接口实现多种按钮操作,如何解决
交易链路设计原则&模式问题之在订单管理系统中,doOp接口实现多种按钮操作,如何解决
|
8月前
|
消息中间件 数据库 RocketMQ
分布式事物【库存微服务业务层实现、实现充值微服务、充值微服务之业务层实现、账户微服务之业务层实现】(九)-全面详解(学习总结---从入门到深化)
分布式事物【库存微服务业务层实现、实现充值微服务、充值微服务之业务层实现、账户微服务之业务层实现】(九)-全面详解(学习总结---从入门到深化)
168 0
|
8月前
|
消息中间件 数据库 RocketMQ
分布式事物【库存微服务业务层实现、实现充值微服务、充值微服务之业务层实现、账户微服务之业务层实现】(九)-全面详解(学习总结---从入门到深化)(上)
分布式事物【库存微服务业务层实现、实现充值微服务、充值微服务之业务层实现、账户微服务之业务层实现】(九)-全面详解(学习总结---从入门到深化)
124 0
|
存储 监控 供应链
账单系统-架构设计思路(对外版)
阿里商旅背景阿里商旅作为飞猪旅行旗下面向企业客户的数字化差旅解决方案产品,依托飞猪旅行机票、酒店供应链,为企业客户提供一站式的机票、酒店、火车票、用车等预订管控及结算票据服务。阿里商旅不仅是集团欢行的供应商,而且近几年在商业化差旅市场上崭露头角,服务了2万+中大型客户,43万+小微企业。FY22财年商旅技术团队重点规划在酒店供应链、预订管控服务、B+C客户服务、渠道及商旅基础建设等核心方向进行建设
4452 2
账单系统-架构设计思路(对外版)
|
8月前
|
Java
代理模式【静态代理和动态代理实现业务功能扩展】
代理模式【静态代理和动态代理实现业务功能扩展】
|
消息中间件 Java Spring
下单流程解耦新方案-你知道Spring事件监听机制吗
下单流程解耦新方案-你知道Spring事件监听机制吗
118 0
|
消息中间件 存储 自然语言处理
RocketMQ 5.0:无状态代理模式的探索与实践
未来,我们期望RocketMQ底层的Broker和NameServer 更多聚焦在存储的特性上,比如业务型消息存储的事务、定时、顺序等,快速构建消息索引、打造一致性多副本提升消息可靠性、多级存储来达到更大的存储空间等。
RocketMQ 5.0:无状态代理模式的探索与实践
原型模式实例订单处理系统
原型模式实例订单处理系统
128 0
原型模式实例订单处理系统