我用Python设计了一个模式,学妹帮拿个快递呗!

【Java案例】模拟物流快递系统程序设计 【代码】【Java案例】模拟物流快递系统程序设计。 阅读详情

回眸一笑

开学啦开学啦,刚才路过食堂,发现隔壁一栋的学妹好漂亮啊,很想找个理由搭讪一下,直接问人家要不要学Python好像有点直接啊。看到宿舍旁边的快递很多,有的时候不太方便拿快递,于是我打算写个代码来教学妹帮我拿快递。

用Python来写设计模式会比Java,C++简洁很多,为啥呢~~还不是因为写Python速度快,语言简洁嘛。人生苦短,我用Python!正好设计模式里面有一种非常简洁的模式,叫代理模式。

先来一段理论介绍,喝两口水润润嗓子~~

1.啥叫代理模式

代理模式,顾名思义就是给某一个对象提供一个代理,并由代理对象控制对原对象的引用。它是一种对象结构型模式。在某些情况下,一个客户不想或者不能直接引用一个对象,此时可以通过一个称之为“代理”的第三者来实现间接引用。

打个比方,我现在从京东买了一个鞋子,这个鞋子寄到学校了,然后呢我希望找一个代理帮我去拿。让学妹帮忙拿一下,有点鸡贼吧。

代理模式有三个关键要素,它们分别是:

  • 主题(Subject):定义“操作/活动/任务”的接口类;

  • 真实主题(RealSubject):真正完成“操作/活动/任务”的具体类;

  • 代理主题(ProxySubject):代替真实主题完成“操作/活动/任务”的代理类;

2.通用的代码框架

下面是一个比较通用的框架:

1).首先抽象出一个通用的主题

比如我们有一个Subject类,然后里面有一个todo任务函数

2).接着抽象出两个主题

  • 这两个主题都是通用主题的子类;

  • 然后一个是真正的主题,另一个是代理的主题;

  • 真正的主题我们先假定里面就一个干活的函数todo();

而代理的主题干了很多事情,有一个干活前的准备铺垫beforeRequest(),还有一个打完收工的afterRequest(),然后代理主题类里面的todo就是真的干代理的活,如果realSubject有值,就去调用真正主题里面的todo即可。

3).客户调用的类

上面的框架都搭建好了之后就可以让客户调用,怎么调用呢,就是设计一个client的函数包裹一下即可。

3.学妹版的拿快递-代理模式

讲了这么多理论和代码,是不是还有点迷糊,确实设计模型招式都很精妙的,需要有一些通俗易懂的例子来诠释。下面终于到了精彩的地方,我们设计一个模式让学妹帮我们拿快递吧。

1).先设计一个包裹的类

抽象设计一个包裹的基类,有快递收件人的名字,快递地址和包裹的东西。

2).接着设计一个收件人的类

这个是真正的包裹要收件人的类,继承了包裹的基类之后,还有一个电话号码和收件的处理。

3).代收包裹的小妹上场

这个是代理人的类,也是继承了包裹的基类,然后在接受包裹前的行为用beforeReceive()处理,接受后会用函数afterReceive()来处理, receive就干代理的事情。

4.最后看一下效果

我是老王的朋友,我来帮他收快递

这个包裹的地址:复旦-计算机系-18级,收件人是:老王,手机:18151815xxx

接受到一个包裹:鞋子

代收人:学妹丽丽

我是老王的朋友,我来帮他收快递

这个包裹的地址:复旦-计算机系-18级,收件人是:老王,手机:18151815xxx

接受到一个包裹:书架

代收人:学妹婷婷


怎么样这个代理模式是不是很简单,容易理解,5分钟就就可以学会!一般我们在真实的项目里面用代理模式主要是想隐藏不希望被客户端看到的内容和服务,或者添加客户需要的额外服务,比如银行的交易里面大量用这样的模式。

辛苦码了代码半天,哎理想很丰满,现实很骨干,就怕学妹不愿意帮我收快递哦,要不下次约学妹恰饭吧。

近期热门:

还在做重复的劳动,不如用Python自动生成Excel以邮件发送

独家秘籍,50行代码教你买哪只黄金股

简单几步,100行代码用Python画一个蝙蝠侠的logo

N年Python老司机,血泪总结新手常见10大错误

学Python真香!我用100行代码做了个网站,帮人PS旅行图片,赚个鸡腿吃!

由 菜鸟学Python 原班人马打造的公众号:程序员GitHub,现已正式上线!
接下来我们将会在该公众号上,为大家分享GitHub上优质的开源神器,程序员圈的趣事,坚持每天一篇原创文章的输出,感兴趣的小伙伴可以关注一下哈!

点击阅读原文,领取新手福利

揭榜挂帅赛道如何搭建baseline?从0到1实战指南 在机器学习与人工智能项目中,baseline(基线模型)是验证技术路线可行性的逻辑起点,也是工程化落地的第一块里程碑。它不追求极致性能,而强调稳定、可复现、可扩展,为后续优化提供可靠的对比基准。通过合理的数据划分、模型选型与训练流程标准化,团队能快速暴露全流程中的潜在问题,避免在错误方向上浪费资源。在“挑战杯”揭榜挂帅这类企业命题赛事中,baseline更是评委判断团队工程能力的关键依据——一个跑通全流程的朴素方案,远胜于只存在于PPT中的高精尖模型。本文结合工业缺陷检测、文档识别等真实场景,系统拆解bas 阅读详情

相关推荐

智能科学与技术专业毕设选题指南:避开深坑,四类稳过方案全拆解

毕业设计本质上是科研训练的项目管理:在有限时间内,以可控风险完成可展示、可解释、可经得起追问的作品。理解机器学习、深度学习等基础概念,掌握数据处理、模型训练与评估的完整链路,比追求算法创新更切合本科阶段的实际。公开数据集上的经典模型复现与对比、仿真环境下的强化学习验证、带界面的识别工具、规则驱动的问答演示系统,都属于数据易获取、工具链成熟、工作量可视化高、有备用方案的稳妥方向。同时需警惕人脸识别、硬件嵌入式、爬虫、大模型微调等表面简单实则深坑的选题。围绕开题、中期、答辩三节点,规范命名、跑通最小链路、预设演

weixin_29032337的博客 270

C-Packets

●问题描述 ●一个工厂制造的产品形状都是长方体,它们的高度都是h,长和宽都相等,一共有6个型号,它们的长宽分别为1×1,2×2,3×3,4×4,5×5,6×6。这些产品通常使用一个6×6×h的长方体包裏包装,然后邮寄给客户。因为邮费很贵,所以エ厂要想方设法地减少每个订单运送时的包裏数量。他们很需要有一个好的程序以解决这个问题从而节省费用。现在这个程序由你 来设计。 ●输入 ●输入文件包括几行,每一行代表一个订单。每个订单里的一行包括6个整数,中间用空格隔开,分别为1×1至6×6这6种产...

weixin_63070960的博客 322

基于Python的校园导航系统:Dijkstra算法与邻接表实现

图数据结构是路径规划的核心基础,邻接表以O(V+E)空间高效存储稀疏图,Dijkstra算法则通过优先队列在O((V+E)logV)时间内求解单源最短路径。在校园导航场景中,将路口抽象为节点、道路抽象为带权边,即可将最短路径问题转化为经典图论问题。Python凭借字典嵌套字典的邻接表实现和heapq优先队列,能快速构建可演示、可扩展的路径规划原型,支持距离与时间双权重切换。本文以校园导航系统为例,详解邻接表选型理由、Dijkstra算法实现细节及数据持久化方案,帮助读者掌握图算法在真实场景中的工程落地方法。

weixin_32520095的博客 200

C++面向对象课程设计报告_快递系统

面向对象程序课程设计 题目:快件管理系统 需求分析 该系统为两种角色的用户提供服务,一种是代收点服务人员,一种是收件人。代收点服务人员根据账号、密码登录系统。收件人无需登录即可使用系统。代收点服务人员可将快件信息录入系统,快件信息包括快递单号、快递公司、收件人、收件人联系电话、收件人地址、邮编、寄件人、寄件人联系电话、寄件...

加载中....... 6693

c++邮寄包裹

有两种邮寄方式,不同的计价标准,可以实现,完好的代码~~

python-demo:快递100,接口,API,快递100免费接口,快递查询接口,快递查询接口,快递100 api,快递100 api接口,快递100接口,快递查询api,快递查询api 免费,快递api,快递接口,接口,API,查询,快递查询,快递信息推送,实时快递查询,云打印,电子面单,商家寄件,C端寄件

python-demo 快递100API的python相关示例代码 1、synquery.py 实时查询示例代码 2、subscribe.py 订阅请求示例代码 3、autonumber.py 智能判断示例代码 4、sms.py 短信请求示例代码

第8章 包装类

** 第8章 包装类 ** public static void main(String[] args) { Character a=new Character('x'); Character b=new Character('y');//创建两个Charcter类 boolean c=a.equals(b);//比较并输出结果 Character.toUpperCase(a); Ch...

CAMDDR的博客 294

XianYuAutoDeliveryX:基于闲鱼API与大模型的智能自动发货系统实践

本文详细介绍了如何利用XianYuAutoDeliveryX系统,结合闲鱼API与大语言模型,构建一个智能自动发货解决方案。该系统能实现买家付款后秒级自动发货,并通过对接ChatGPT等大模型智能回复买家咨询,有效解放卖家时间,提升虚拟商品店铺的运营效率和客户体验。

bush的博客 1022

Spring Boot实战:校园无人快递系统毕业设计全流程解析

在软件工程实践中,后端开发框架是构建企业级应用的核心基础。Spring Boot作为Java领域的主流框架,以其约定大于配置的理念和强大的自动装配能力,显著提升了开发效率。其核心原理在于通过Starter依赖和自动配置机制,简化了传统Spring应用的繁琐配置,使开发者能快速搭建可独立运行的、生产就绪的应用程序。这一技术价值体现在能够帮助开发者,尤其是学生,聚焦于业务逻辑而非环境搭建,是完成课程设计、毕业项目乃至构建微服务架构的理想起点。典型的应用场景包括快速开发RESTful API、数据驱动的Web管理

weixin_33724570的博客 430

车载仪表-功能点测试大全(超详细,细分可作测试用例)

汽车仪表系统发展经历了机械式、电气化到智能化的演变,目前全液晶仪表渗透率达73.4%。文章详细梳理了仪表功能测试要点,包括UI界面显示一致性、按键响应、FM收音、信号灯显示、USB功能、蓝牙连接、胎压监测、导航系统、WiFi投屏、倒车影像及多媒体播放等关键功能模块的测试标准。特别关注界面切换流畅度、功能稳定性及异常情况处理能力,如投屏状态下是否卡顿、导航中断后能否自动恢复等。测试覆盖了CarPlay、AndroidAuto等主流投屏方案的兼容性验证,确保各类交互场景下的系统可靠性。

weixin_51551002的博客 2069

记录:N10激光雷达串口编程,将数据存进 SQLite,并进行 ROS2 - cartographer 单雷达建图

N10 系列采用 TOF(time of flight)测距原理,通过测量调制激光的发射、返回时间差来测量物体与传感器的相对距离。激光发射器发出调制脉冲激光,内部定时器开始 从t1时刻计算时间,当激光照射到目标物体后,部分能量返回,当雷达接收到返回的激光信号时,在t2时刻停止内部定时器计时,光速C,激光雷达到达物体的距离D为:经过N10系列激光雷达内嵌的信号处理单元的实时解算得到探测物体的距离值,结合高精度自适应角度测量模块输出的角度信息,可以得到量程内周围 360 度环境 的二维平面信息。

m0_74013893的博客 1096

Spring Boot实战:校园无人快递系统开发指南

在Web应用开发领域,Spring Boot作为Java生态中主流的快速开发框架,以其‘约定大于配置’的理念和丰富的技术栈集成能力,极大地简化了企业级应用的构建与部署流程。其核心价值在于通过自动配置和起步依赖,让开发者能快速搭建稳定、可扩展的后端服务,从而专注于核心业务逻辑的实现。这一特性使其在各类管理系统、物联网平台及智能解决方案的开发中广泛应用。本文聚焦于一个典型的应用场景——校园无人快递系统,详细阐述了如何利用Spring Boot整合JPA、MySQL等技术,实现快递量预测与智能派单两大核心功能,为

weixin_30561425的博客 990

如何在STM32上5分钟搞定nanopb协议传输?附完整代码示例

本文提供了在STM32微控制器上快速集成nanopb协议传输的实战指南。通过详细的步骤,从.proto文件定义、代码生成到STM32CubeIDE项目移植,帮助开发者利用nanopb这一轻量级Protocol Buffers C语言实现,在5分钟内构建高效、跨平台的嵌入式设备通信框架,并附有完整的代码示例。

jwt8token的博客 839

校园快递代领小程序设计与实现:Python+微信小程序全栈开发

从校园场景的“身份闭环”说起,探讨如何用微信小程序与Python后端搭建一个轻量、可落地的快递代领平台。文章从需求拆解出发,深入数据库设计、订单状态机、抢单并发控制等核心原理,并给出Flask+MySQL+Nginx的工程实践方案。针对学生开发者关心的免企业资质支付、订阅消息通知、小程序审核避坑等问题,提供了具体可行的替代设计。内容覆盖从0到1部署上线的完整链路,适用于毕业设计、校园创业或学习全栈开发。以真实运营数据验证了架构的稳定性,为类似校园跑腿项目提供了一套可复用的设计范式。

weixin_29193259的博客 202

U盘安装单系统ubuntu10.04之全过程&拔掉U盘后系统无法启动

借助U盘把电脑装成ubuntu单系统之过程记录,以及遇到拔掉U盘后系统无法启动问题,电脑就显示: Non-System disk or disk error, replace and strike any key when ready

CXHPLY的专栏 8681

手把手教你学simulink(16.8)--基于Simulink的小波变换滤波器(Wavelet Transform Filter)项目

基于Simulink的小波变换滤波器(Wavelet Transform Filter)项目的详细实例介绍。这个项目将重点放在小波变换滤波器的设计、实现和仿真上,帮助你理解和应用小波变换滤波器在信号处理中的作用。

MHD0815的博客 534

自动化本科生项目实战指南:从PLC工控到嵌入式与Python自动化

自动控制与工程实践是自动化专业的核心能力,而项目实战正是将控制理论、传感器检测与执行机构联动起来的桥梁。从工业现场的PLC顺序控制与HMI人机交互,到嵌入式系统的状态机与MQTT通信,再到软件测试领域的Python脚本、Selenium与持续集成,这些技术本质上都遵循“检测-反馈-调节”的统一控制模型。对于自动化专业学生而言,选择小型但完整的项目,例如基于ESP32的物联网设备、立体车库PLC模拟系统或接口自动化测试框架,能够在有限预算内打通从原理到落地的全链路,锻炼逆向排查与文档沉淀能力。本文梳理了工控、

weixin_34216196的博客 413

基于BP神经网络PID控制的电机转速控制器设计复现

摘要:本文提出了一种基于BP神经网络PID控制的永磁同步电机转速控制方法,通过MATLAB/Simulink平台实现了算法复现。系统采用三层BP神经网络在线调整PID参数,包含输入层(误差、误差变化率、误差积分)、5节点隐含层和输出层(Kp、Ki、Kd)。仿真结果表明,相比传统PID控制,该方案具有更快的响应速度(上升时间减少约40%)、更小的超调量(降低约60%)和更强的抗干扰能力,在电动汽车电机驱动等复杂工况下表现优异。文中详细给出了PMSM数学模型建立、BP网络设计、权值更新算法及Simulink仿真

max500600的博客 308

京东2019校招算法笔试考点全解析:从KMP到业务场景题

算法工程师的校招笔试,往往不只是考察代码能力,更是对数据结构、机器学习理论以及工程思维的全面检验。从最基础的字符串匹配说起,KMP算法中next数组的两种定义与手推方式,到堆排序、快速排序等经典排序在不同业务场景下的选型,再到动态规划的模板识别与状态转移思路,每一个知识点都构成了解题的底层能力。而机器学习与深度学习部分则聚焦于模型原理、损失函数、特征工程与推荐链路设计,体现从理论到落地的完整技术价值。这些基础能力最终要应用于电商搜索、商品排序、召回与点击率预测等真实业务场景中。本文以京东2019校招算法笔试

weixin_34055787的博客 307

8-bit量化在YOLOv11中的部署实践-(使用PTQ、QAT量化技术实现模型体积压缩和推理加速)

本文系统介绍了YOLOv11模型量化技术,主要包括三个核心部分:首先阐述模型量化的基础理论,包括量化分类、数学原理和性能影响;其次分析YOLOv11架构特点及其量化敏感层;最后详细讲解训练后量化(PTQ)的具体实现流程。研究表明,8-bit量化可使YOLOv11模型大小缩减至1/4,推理速度提升1.7-2.3倍,精度损失控制在1%以内。文章特别强调了校准算法选择(如最小最大值法和KL散度法)对量化效果的关键影响,并提供了完整的代码实现示例,为YOLOv11的高效部署提供实用指导。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 1629

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

基于Hadoop的电信诈骗话术语义特征挖掘系统毕设全解析

大数据与机器学习技术为文本语义特征挖掘提供了高效路径。非结构化文本经过HDFS分布式存储、Spark清洗与预处理、jieba分词、向量化表征、LDA主题聚类以及分类模型训练,即可转化为可解释的语义标签与应用结论。这一技术链路不仅适用于舆情监测、工单自动归档等场景,也能服务于电信网络诈骗话术分析——通过词云、热力图与雷达图直观呈现“冒充公检法”“刷单返利”等话术的语义特征,帮助识别诈骗话术变体,提升反诈宣传与预警效率。文章以基于Hadoop的电信网络诈骗话术语义特征挖掘分析系统为例,详细拆解环境部署、数据构造

weixin_29054195的博客 266

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

JAVA包裹类型

1、包裹类型 包裹类型是一种类。对于基本数据类型而言,他们并不是一种类,在一些需要对基本数据类型的类进行操作的情况下,就需要用到包裹类型,通过包裹类型的方法可以优化代码并提高编程的效率。 2、各个基本数据类型对应的包裹类型: char ———— Character int ———— Integer ...

qq_42332204的博客 2575

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Java程序设计综合练习题(期末考试)

一:判断题 1:如果使用import语句引入了整个包中的类,那么可能会增加编译时间。但绝对不会影响程序运行的性能,因为当程序执行时,只是将真正使用的类的字节码文件加载到内存。 (T) 2:一个数组可以存放许多不同类型的数值。 (F)    3:设String对象s="Hello ",运行语句System.out.println(s.concat("World!"));后String对象s的内...

张蔡辉 3万+

Java的类(class)、包(package)和接口(interface)

在Java中,类(class)是用来代表对象的基本单元。对象(object)可以是现实世界中的任何一个实体,它具有若干区别于其它对象的属性和操作。而类则通过为对象定义属性和操作来概括一类实体。它封装了一组变量和方法,是生成实例对象时的模板。如一辆汽车可视为一个对象,它既具有型号、

cooljun618的专栏 6640
上一篇: 7个最佳的学习Python编程的开源库
下一篇: 牛逼啊!一顿火锅钱+一台旧手机 = 自主导航机器人?
菜鸟学Python
博客等级 码龄9年 8083粉丝 571原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值