代理模式实例订单系统

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

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

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

    }

}
目录
相关文章
|
9月前
|
设计模式 消息中间件 监控
构建高效可扩展的微服务架构
【5月更文挑战第31天】随着企业应用的复杂性增加,传统的单体架构已难以满足快速迭代与高可用性的需求。本文将探讨如何通过微服务架构实现系统的模块化、动态扩展和容错能力,以及在构建过程中需要注意的核心原则和常见模式。我们将从微服务的定义出发,深入其设计理念,并通过案例分析展示如何在现实世界中实现一个高效且可扩展的微服务系统。
|
4月前
|
消息中间件 关系型数据库 MySQL
大数据-117 - Flink DataStream Sink 案例:写出到MySQL、写出到Kafka
大数据-117 - Flink DataStream Sink 案例:写出到MySQL、写出到Kafka
376 0
|
4月前
|
供应链 前端开发 数据库
代购系统的开发与应用
在全球化背景下,代购系统作为连接消费者与全球商品的桥梁,通过专业代购人员或机构,解决关税、语言等障碍,为消费者提供安全可靠的购物平台。该系统涵盖前端界面、后端服务、数据库及支付接口等核心组件,实现商品展示、订单管理、库存管理和支付物流等功能,提升用户体验,促进跨境电商和个人代购业务的发展。面对数据安全、跨境支付等挑战,代购系统正逐步优化,未来将在全球购物领域发挥更大作用。
111 2
|
4月前
|
人工智能 算法 测试技术
PAI 大语言模型评测平台现已支持裁判员模型评测
本文将为您介绍如何在 PAI 大语言模型评测平台,基于裁判员模型,评价开源模型或者微调后模型的性能。该功能限时免费,欢迎使用。
|
5月前
|
存储 缓存 自然语言处理
深度解析ElasticSearch:构建高效搜索与分析的基石
【9月更文挑战第8天】在数据爆炸的时代,如何快速、准确地从海量数据中检索出有价值的信息成为了企业面临的重要挑战。ElasticSearch,作为一款基于Lucene的开源分布式搜索和分析引擎,凭借其强大的实时搜索、分析和扩展能力,成为了众多企业的首选。本文将深入解析ElasticSearch的核心原理、架构设计及优化实践,帮助读者全面理解这一强大的工具。
398 7
|
8月前
|
前端开发 开发者 UED
CSS进阶-CSS Sprites技术
【6月更文挑战第14天】**CSS Sprites是一种合并多个小图至大图的技术,减少HTTP请求,提升页面加载速度。本文探讨了精灵图的核心概念,常见问题(如定位不准、适应性问题、维护困难)及解决方案。建议使用工具精确计算坐标,采用媒体查询适应不同屏幕,建立图标管理机制,并提供代码示例展示如何应用。尽管有WebP、SVG等新技术,但在处理大量小图标时,CSS Sprites仍是高效选择。理解和掌握此技术对前端开发者至关重要。**
189 2
|
6月前
|
芯片 SoC
【驱动】【设备树】一个简单的系统级芯片(SoC)的设备树节点
【驱动】【设备树】一个简单的系统级芯片(SoC)的设备树节点
68 0
|
8月前
|
消息中间件 监控 Java
Java 框架界的‘巨星’Spring,让你的代码翩翩起舞!
【6月更文挑战第25天】Spring,Java框架的明星,以其依赖注入(DI)和面向切面编程(AOP)简化开发。DI协调类间协作,AOP提供日志、监控等附加功能。事务管理确保代码稳定性,注解如`@Transactional`自动化事务处理。Spring的集成能力使代码灵活适应多样技术场景,让编程变得优雅高效,犹如舞蹈般流畅。跟随Spring,让代码起舞!
54 6
|
8月前
|
搜索推荐 程序员 定位技术
程序员必知:图层Layers的介绍
程序员必知:图层Layers的介绍
49 0
|
9月前
|
算法 安全 网络安全
HTTPS加密原理解析:保障通信安全的密码学算法
HTTPS加密原理解析:保障通信安全的密码学算法
850 0

热门文章

最新文章