前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >以练代学设计模式(1)命令、单例、备忘录,与简单工厂

以练代学设计模式(1)命令、单例、备忘录,与简单工厂

作者头像
看、未来
发布于 2020-08-25 15:28:23
发布于 2020-08-25 15:28:23
5030
举报

我这人是很提倡以练代学的,光说不练假把式,看我QQ昵称,just do it。 书上得来终觉浅,我有加设计模式的群,里面大佬不少,但是好像都是书上的大佬,我野不好反驳他们。有人愿意问我,我就两个字:实战。

最近接手了一个小项目,运动会的管理系统,正好我在学习设计模式,就接过来了。

项目需求是这样的:

任务:参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m<=20,n<=20) 运动项目可以包括50、100、200,400,1500米,跳高,跳远,标枪,铅球铁饼等。 一个选手信息: 姓名、选手编号、学校编号、性别、年龄。 一个运动项目信息: 项目名称、项目编号、适用性别、成绩排名规则。 一个选手参加运动项目成绩信息: 选手编号、项目编号、选手成绩、排名、得分。 运动会选手列表:数组名、总规模、当前选手个数 运动会运动项目列表:数组名、总规模、当前运动项目个数 运动会选手参加运动项目成绩列表:数组名、总规模、当前选手参加运动项目成绩个数 功能要求: 对选手信息、运动项目信息、成绩信息进行管理。可参考如下: 1) 可以输入各个项目的前三名或前五名的成绩; 2) 能统计各学校总分, 3) 可以按学校总分排序输出; 4) 可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。 5) 数据存入文件并能随时查询 6) 规定:输入数据形式和范围:可以输入学校的名称,运动项目的名称。

接手这个项目的时候,正好赶上技术人员跑路,耽误了一半工期。这要是正常情况,我就不会接,但是吧,奈何咱学墨家的,实在按不住内心一股正义冲动,就接下来了。奈何咱就是那种工作狂,彻夜加班就没让正义迟到。

转回正题。

看到这个项目需求,内心第一反应是什么?数据库。反正在我这里是不可能去用文本文件,要是逼我那我考虑一下。 那数据库,绕不开的就是单例模式了。好,单例模式定下来了。

接下来呢?设计模式六大原则熟吗?从原则出发,一切从根本抓起。 先是依赖倒置原则,面向接口,左右排开。 其次是单一职责,界面就是界面,数据库就是数据库。 之后这俩模块,它们要交互啊,要交互那用什么设计模式?刚开始我的想法是:中介+命令结合一下,然后晚上转念一想,要不中介+观察吧,真是被这中介给迷住了,因为界面好几个,数据库功能也好几个,但是它们都是单线联系的,都是单线联系的。

这点很重要,都是单线联系的,一个界面对应的后台算法就一个,那我为什么不把需求封装成对象呢?那不就是一个命令模式的事情了。那这么多界面怎么办?简单工厂啊,难不成还要去搞个策略出来?简单工厂,简简单单才是真嘛。

那我找一下类图啊,画的比较粗糙一点,只可意会。

啊,能意会吧。

后来呢,客户又加了个需求,就是界面回滚。那怎么搞,当然,这个需求我没满足人家,这两天实在是烦。

业务回滚嘛,备忘录嘛,没得跑了。我这类图我都准备好了:

看嘛,备忘录。后面我可能会和朋友再走一次这个流程,那会儿会把备忘录功能加上去。

至此,这个项目解耦就很完备了嘛,开工,干活,一天一夜我就解决了。

真的,不拼一回,我一直以为这种项目我要做三天。

题外话:这些天我都很闷,在离开阴影的时候,总是会格外的痛苦。但是我的朋友们也没有放弃我,我很感谢他们。 今天我看到一篇博客:当我的人生彻底转折时,我还以为那只是平常的一天。 是啊,在培训敲代码前,我学过博弈论,会演讲,学过谈判,了解一些金融知识,我很喜欢这些。但是编程之后认识的朋友们都把我当成不爱说话的码农,其实我还是很失落,甚至有时候就想,这样的机器人生活,我喜欢?我不喜欢这种不咸不淡的感觉,每天固定写什么,学什么,好像一切都被安排好了。我一直想写这篇文章,一直想去骑行,但是都被搁浅了。 我不干了,我要追随自己的内心,接项目,只是因为我想接,写博客,只是因为我想写,有朋友交,只是因为我愿意,没别的意思,我自己要变好,这才是解放时间最值的方式。

之前想不通,我也不知道为什么,就是想不通。现在想通了,亏的又不是我,我在努力,每天都不一样。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/06/07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
curl命令
curl(CommandLine Uniform Resource Locator),是一个利用 URL 语法,在命令行终端下使用的网络请求工具,支持 HTTP、HTTPS、FTP 等协议。curl也有用于程序开发使用的版本 libcurl。
用户10638239
2024/01/16
3500
一文学会curl和curl详解
cURL是一个利用URL语法在命令行下工作的文件传输工具,1997年首次发行。它支持文件上传和下载,所以是综合传输工具,但按传统,习惯称cURL为下载工具。
星哥玩云
2022/05/28
5.1K0
一文学会curl和curl详解
curl 用法简介
curl 是一个命令行客户端,支持多种传输协议,最经常使用的场景就是在终端请求服务器资源。
后端码匠
2022/01/18
1.9K0
curl 用法简介
Linux curl命令最全详解
curl是一个非常实用的、用来与服务器之间传输数据的工具;支持的协议包括 (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET and TFTP),curl设计为无用户交互下完成工作;curl提供了一大堆非常有用的功能,包括代理访问、用户认证、ftp上传下载、HTTP POST、SSL连接、cookie支持、断点续传…。
全栈程序员站长
2022/09/19
4.3K0
Linux curl命令最全详解
Linux系列之学会使用CURL命令进行URL测试
curl命令是一个利用URL规则在shell终端命令行下工作的文件传输工具;curl命令作为一款强力工具,curl支持包括HTTP、HTTPS、ftp等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征;做网页处理流程和数据检索自动化。
SmileNicky
2022/05/07
2.2K0
Linux系列之学会使用CURL命令进行URL测试
Linux系列之学会使用CURL命令
curl命令是一个利用URL规则在shell终端命令行下工作的文件传输工具;curl命令作为一款强力工具,curl支持包括HTTP、HTTPS、ftp等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征;做网页处理流程和数据检索自动化。
SmileNicky
2020/07/21
1.5K0
python爬虫教程:爬虫的基本流程
Python现在非常火,语法简单而且功能强大,很多同学都想学Python!所以小的给各位看官们准备了高价值Python学习视频教程及相关电子版书籍,欢迎前来领取!
python学习教程
2019/07/10
8930
Curl的简单使用
curl (Client url)在大部分的使用场景下,基本充当的是一个下载工具的角色,比如:curl -v http://www.baidu.com, 表示下载百度页面,但其实深入了解后,会发现crul这个命令能做的事情可不仅仅只有下载。了解crul的各种参数后,他的作用完全可以和postman相媲美。而且他下载所下载的是源代码,是没有经过渲染的,可以看到更多的信息。在CTF中的信息收集中,curl也是常用的手段之一。
Tommonkey
2023/02/25
1K0
curl 命令-接口测试
在linux/Unix 为代表的os上, 对后端进行测试, 模拟连接请求都会书写脚本
louiezhou001
2019/07/25
2.1K0
curl 命令-接口测试
可以Postman也可以cURL.进来领略下cURL的独门绝技
cURL 是一个开源免费项目,主要是命令行工具 cURL 和 libcurl,cURL 可以处理任何网络传输协议,但是不涉及任何具体的数据处理。
未读代码
2020/06/03
8770
cURL 技巧学习
cURL 是一个非常强大的命令行工具,用于与各种网络协议进行交互。以下是一些常用的 cURL 参数:
收心
2024/06/04
1080
Linux curl 常用示例
如果想了解curl选项的详细说明,请参考前一篇文章「Linux curl 命令详解」。
踏歌行
2020/10/15
9.9K0
Linux curl 常用示例
Linux curl 命令详解
curl 是一个工具,用于传输来自服务器或者到服务器的数据。「向服务器传输数据或者获取来自服务器的数据」
踏歌行
2020/10/15
39.3K0
Linux curl 命令详解
Linux环境下接口调试利器:cURL
在日常开发中,我们通常使用Postman做接口调试,但在一些环境下,无法使用图形界面工具来调试,此时就可以使用curl这个命令行工具来调试,curl的功能非常强大,如果是用熟练的话,完全可以取代Postman这类图形界面工具。
小诸葛
2022/12/12
1.5K0
Linux环境下接口调试利器:cURL
curl常用命令
curl常用命令行 发送请求,默认get方式 1 curl "url" //网页或json,string会打印到标准输出中,-o 参数可以制定输出位置 上传文件 1 curl -u name:password -T filePath ftp://serverName 使用代理 1 curl -x server:port url 保存cookie 1 2 curl -c cookie.txt url curl -D cookie.txrt url //
caoayu
2020/09/23
6200
Linux下curl 命令的基本使用方法
cURL利用URL语法在命令行下工作的文件传输工具,1997年首次发行,常用来请求 Web 服务器。它的名字就是客户端(client)的 URL 工具的意思。
DS小龙哥
2022/01/12
1.9K0
Linux下curl 命令的基本使用方法
快来看,敖丙还不会curl
curl应该还算是一个比较常见的东西吧?比如说,我们在学习Elasticsearch的时候去看官方文档,就可以看到curl的踪影,有的时候看别人的写的文档也会看到curl的踪影。
Java3y
2020/06/28
6410
快来看,敖丙还不会curl
Linux的curl命令
文章作者:Tyan 博客:noahsnail.com  |  CSDN  |  简书
Tyan
2022/05/09
10.9K0
CURL 命令简介
curl是利用URL语法在命令行方式下工作的开源文件传输工具。它被广泛应用在Unix、多种Linux发行版中,并且有DOS和Win32、Win64下的移植版本。 curl 就是使用命令的方式来执行http协议的请求的工具。可以通过curl操作HTTP的GET/POST/PUT/DELETE方法。
全栈程序员站长
2022/09/13
6330
教程 | Requests的基本用法
Requests是Python语言编写,基于urllib3,采用Apache2 Licensed开源协议的HTTP库。它比urllib更加方便,可以节约我们大量的工作,完全满足HTTP测试需求。是Python实现的简单易用的HTTP库。
昱良
2019/05/13
8140
教程 | Requests的基本用法
相关推荐
curl命令
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档