设计模式在项目中的应用案例_设计模式在项目中的应用(初学者版)

09a6fc3705d04ada7d581f9244f2f12f.png
文章首发链接:
设计模式在项目中的实际应用(应试版)​mp.weixin.qq.com
2f8e190d89cfd6d0e7dbaa90387a76f3.png

本文适用于设计模式初学者。

很多人学习了设计模式,但在项目开发中仍然不知道如何使用;

很多小伙伴在课堂上跟着老师稀里糊涂的听了,懂了,考核让做项目,却又懵逼了。

设计模式这种从理论到应用的落地,需要有足够的编程经验和应用场景,今天这篇文章就为大家分享一下,自编自导自演的设计模式在实际项目中的开发使用。

项目中有部分是为了设计模式而设计模式,运用的虽不是很完美,但如果你练手,或者应付一次期末考核大作业,应该是没问题。

只需要你有基本的 SSM 开发经验,该项目就完全能够理解的通。

项目名称

商城购物&管理系统v0.0.1

技术

B/S 体系架构

SSM + LayUI + MySQL5.X(8.X) + IDEA + TOMCAT

项目效果

下面是项目运行截图

f96839480cbde5015401735e1c3a3ffb.png

a507a5e8bfa393293ad6f5a724a6044d.png

84aa1f7c38cf4a0f72278a2bc0ec5c23.png

业务需求

顾客登录系统后,可以购买物品;

商家有三种人员,店铺职员、库存经理、店铺Boss。店铺职员可以发起进货申请,由库存经理和店铺 Boss 审批进货申请;

用户下单后,店铺职员、库存经理都能够收到下单通知。

业务分析

  • 多用户登录(顾客、店铺职员、库存经理、老板)。采用策略模式
  • 在页面向顾客展示商品图片。图片加载采用单例模式
  • 顾客下单,通知店铺职员、库存经理。采用观察者模式
  • 店铺职员申请进货,增加库存量,小于 500,库存经理直接审批;大于 500,由老板直接审批。 采用责任链模式
  • 整体项目架构 MVC 模式

详细解析

用户登录 - 策略模式

94406c6ddbbe794d2e56de1e192875cf.png

每一种用户登录时有自己的处理方式,比如写入用户身份(0、1、2 分别代表不同的用户身份),添加不同的 Session 值。

商品图片加载 - 单例模式

51cdf1d6318934d279e88010be33b1e1.png

FtpCommection 是一个单例类,控制 FTPClient(FTP 服务用到的一个类),间接避免产生多余的 client。

ftpConnection 对象可以调用下载方法 downloadFile()。

顾客下单通知 - 观察者模式

62e560edb4ae7931e789ec0aa0236fc4.png

用户下单后,通知店铺职员和库存经理发货。

观察者为店铺职员,库存经理。被观察者为一条订单。

职员申请进货审批 - 责任链模式

b9f9eeef4ed656a5495dc6d399d0ba8f.png

店铺职员发起进货申请,进货数量小于 500 时,由库存经理直接审批;大于 500 时,需由老板 Boss 审批。

整体项目架构 - MVC 模式

7f062659d8fdf3338c83c12d708b8061.png

注意点

1. 关于 FTP 文件服务器,需要在自己本地进行搭建,我的搭载了服务器,虽然你暂时可以用,但可能不确定啥时候图片我就给删了(哈哈)。因此拿到项目后需要在自己本地搭建 FTP 文件服务器。

很简单,随便找一篇教程就可以。然后把服务器的地址、名字、密码在 CommodityServiceImpl 类中修改一下。

2. 数据库,如果使用的5.x版本的 MySQL 数据库,pom.xml 里面就采用 5.x 版本的依赖;如果是 8.x 版本的MySQL 数据库,pom.xml 里面就采用 8.x 版本的数据库;8.x 版本的数据库在 jdbc.properties 文件中,数据库的连接需要改为

 jdbc.driver=com.mysql.cj.jdbc.Driver

3. 只有在前端加载商品图片时,采用了单例模式下载 FTP 服务器中的资源。后端的商品图片获取,是直接在静态资源文件夹中写死的。

4. 项目源代码、数据库的源文件(数据库表和数据),在公众号内回复 cms 可以获取。

项目比较简单,细细读一下应该没什么问题。若有什么问题,上面的文章首发链接内有我微信,随时联系我吧。拜拜

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/305038.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微创社001期:从0开始创作第一本技术书

互联网已经成为了人们生活中如饮水空气一般的基础设施,它不仅影响着当下我们的生活,也必将在更加普遍的领域影响着我们的未来。而在大浪潮中,坚守一个以自我为中心的知识体系,不仅有助于我们作为个体更好的从互联网汲取养分&#…

关于虚拟机下linux共享Windows文件的解决方案

先跟大家说一下在windows下装的vmware,就是又在vmware的系统里虚拟了一个Linux的系统的话,我们有些朋友就是想法把物理机的东西拷贝到Linux虚拟机里时很是伤神,当然windows就很简单了,直接拖进去(如果你安装了vmware t…

10分钟让你快速掌握Excel的16项重要技巧

大家在日常生活、工作使用Excel时,是不是总会遇到很多问题呢? 不小心将文件命名错了,要一个个改? 文件里只需要数据却不知道怎么提取? 工作汇报要做数据汇总、需要插入大量图片怎么办? 甚至在耗费相当多的时间与精力…

android刷新时的圆形动画_Android自定义加载圈动画效果

本文实例为大家分享了Android自定义加载圈动画展示的具体代码,供大家参考,具体内容如下实现如下效果:该效果图主要有3个动画:1.旋转动画2.聚合动画3.扩散动画以上3个动画都是通过ValueAnimator来实现,配合自定义View的onDraw()方法实现不断的刷新和绘制界…

hashset默认长度是多少?_看看,这些细节上的坑,你犯了多少?

来源:http://1t.click/ata8# 前言代码优化 ,一个很重要的课题。可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样…

linux中wine yum安装,分享|在基于RedHat或Debian的系统上安装 Wine 1.7

Wine,Linux上最流行也是最有力的软件, 可以顺利地在Linux平台上运行Windows程序和游戏。这篇文章教你怎么在像CentOS, Fedora, Ubuntu, Linux Mint一样基于Red Hat和Debian的系统上安装最新的Wine 1.7。在Linux安装 Wine 1.7不幸的, 在基于Red Hat的系统上没有官方的 Wine 仓库…

C# 规则引擎RulesEngine

当编写应用程序时,经常性需要花费大量的时间与精力处理业务逻辑,往往业务逻辑的变化需要重构或者增加大量代码,对开发测试人员很不友好。之前在这篇文章说过,可以使用脚本引擎来将我们需要经常变化的代码进行动态编译执行&#xf…

Windbg设置条件断点

条件断点(condition breakpoint)的是指在上面3种基本断点停下来后,执行一些自定义的判断。在基本断点命令后加上自定义调试命令,可以让调试器在断点触发停下来后,执行调试器命令。每个命令之间用分号分割。语法格式如:…

还不知道这 11 个超酷的编程新工具你就 out 了!

工具对开发人员来说至关重要。工具可以让一个开发人员的日常工作更高效,并且只需要关注最重要的事情。对于开发人员来讲,寻找更好的替代工具往往比坚持使用熟悉过时的工具更困难。 在这篇文章中,我们将列出你在日常工作中能够使用的新的开发工…

thinkphp5 异步调用方法_thinkphp5 swoole 执行异步任务

目录结构:服务器端:/**author:hdj*/namespace app\Console;use think\console\Command;use think\console\Input;use think\console\Output;class Websocket extends Command{protected $server;protected function configure(){$this->setName(webso…

python单击url下载网页文件_使用不带url的python脚本从网页下载文件,调用onClick函数 - javascript...

有一个网页带有链接“单击下载”,单击该链接可以下载文件。 我可以通过转到网页并单击此链接来手动下载此文件,但是我需要通过python脚本下载此文件。 如果我看到源代码,则可以看到锚标记将运行js函数 Download in csv 但是我不知道csv文件的…

Linux装多个apache,windows linux如何安装多个apache?

富国沪深Windows下安装多个Apache服务:1.安装好Apache以后,可以在浏览器中输入http://localhost测试;2.更改第一个站点的根目录:在文件Apache2.2\conf\httpd.conf中查找 DocumentRoot 属性,将后面的路径改为你的主站点…

[Abp 源码分析]DTO 自动验证

点击上方蓝字关注我们0.简介在平时开发 API 接口的时候需要对前端传入的参数进行校验之后才能进入业务逻辑进行处理,否则一旦前端传入一些非法/无效数据到 API 当中,轻则导致程序报错,重则导致整个业务流程出现问题。用过传统 ASP.NET MVC 数…

五分钟搞懂并查集

并查集是我暑假从高手那里学到的一招,觉得真是太精妙的设计了。来看一个实例,杭电1232畅通工程。首先在地图上给你若干个城镇,这些城镇都可以看作点,然后告诉你哪些对城镇之间是有道路直接相连的。最后要解决的是整幅图的连通性问…

openwrt安装蒲公英_网速不给力?双宽带叠加,立马消除卡顿

公司有两条宽带,一直想充分利用起来,不过网上搜了下,好像只有软路由或路由器刷了OPWRT之后才能双宽带叠加。软路由需要一定的DIY知识,刷Opwrt需要对编程有一定的了解,这两样我都不会,本想放弃时&#xff0c…

linux强大功能,linux grep和find 的强大功能

grep和find在linux中查找是很强大的,把grep及find的用法及参数列表做个备份以备以后查找:1.grep 命令,grep命令有个常用的参数使用方法如下grep -[acinv]-a 以文本文件方式搜索 -c 计算找到的符合行的次数 -i 忽略大小写 -n 顺便输出行号-R 读…

windows7 + vs2008 + oracle + iis7 客户端配置成功

可以做开发,有兴趣的朋友可以试试. 网上有中文语言包

[Abp 源码分析]多语言(本地化)处理

点击上方蓝字关注我们0.简介如果你所开发的需要走向世界的话,那么肯定需要针对每一个用户进行不同的本地化处理,有可能你的客户在日本,需要使用日语作为显示文本,也有可能你的客户在美国,需要使用英语作为显示文本。如…

Kaggle 发布首份数据科学从业报告 | 不及美国同行1/3,中国数据科学家平均年薪约3万美元

Kaggle 是互联网上最著名的数据科学竞赛平台之一,今年 3 月 8 日,这家机构被谷歌收购,6 月 6 日又宣布用户数量超过了 100 万人。互联网创业方兴未艾,人工智能的浪潮又接踵而来,而贯穿其中的数据科学则在这更迭交替中显…

sequelize模型关联_关于Sequelize连接查询时inlude中model和association的区别详解

前言大家都知道在使用Sequelize进行关系模型(表)间连接查询时,我们会通过model/as来指定已存在关联关系的连接查询模型,或是通过association来直接指定连接查询模型关系。那么,两者各应该在什么场景下使用呢?一、 示例准备模型定义…