文章首发链接:

设计模式在项目中的实际应用(应试版)​mp.weixin.qq.com

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

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

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

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

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

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

项目名称

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

技术

B/S 体系架构

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

项目效果

下面是项目运行截图

业务需求

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

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

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

业务分析

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

详细解析

用户登录 - 策略模式

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

商品图片加载 - 单例模式

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

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

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

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

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

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

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

整体项目架构 - MVC 模式

注意点

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 可以获取。

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

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

  1. .Net 6.0中的新增特性_.Net 6.0中的新增功能

    .Net 6.0中的新增特性_.Net 6.0中的新增功能 一..Net 6 介绍 .NET 6 作为 LTS 长期支持版本,.NET 6 将会获得 3 年的技术支持. .NET 6 是首个原生支持 ...

  2. css如何保留空格,HTML/CSS中的空格处理_如何保留页面中的空格

    html中的空格的规则 在html中内容中的多个空格一般会被视为一个,连续的多个空格符被自动合并了.同时内容前后的空格也会被清除, 如下: fly63 com 显示效果为: fly63 com 备注: ...

  3. amp jsp空格 nps_HTML/CSS中的空格处理\_如何保留页面中的空格【转】

    HTML/CSS中的空格处理\_如何保留页面中的空格[转] HTML中的空格的规则 在html中内容中的多个空格一般会被视为一个,连续的多个空格符被自动合并了.同时内容前后的空格也会被清除, 如下: ...

  4. uml图中的各种箭头_设计模式学习笔记(二):UML与面向对象设计原则

    1 UML 1.1 UML UML(Unified Modeling Language)是统一建模语言,1997年11月UML1.1版本提交给OMG并正式通过,成为建模语言的个那个也标准.2003年6 ...

  5. java项目中多个定时器_在java项目中如何使用Timer定时器

    在java项目中如何使用Timer定时器 发布时间:2020-11-16 16:36:16 来源:亿速云 阅读:97 作者:Leah 在java项目中如何使用Timer定时器?很多新手对此不是很清楚, ...

  6. .net 从txt中读取行数据_【VBA项目】从指定文件中读取数据并绘制图表

    VBA 是一种很久远的编程语言,但并不过时.在满足以下两个条件时,借助 VBA 可以极大的提升生产率,降低出错率: 你的电脑上不允许自主安装软件: 你需要执行的工作中大部分的步骤都是固定且重复的. 项 ...

  7. java中项目启动时加载_如何在项目启动时,加载或解析某配置文件

    在web项目中有很多时候需要在项目启动时就执行一些方法,而且只需要执行一次,比如:加载解析自定义的配置文件.初始化数据库信息等等,在项目启动时就直接执行一些方法,可以减少很多繁琐的操作. 在工作中遇到 ...

  8. python 中缩进的作用_缩进在Python中的作用有哪些?Python缩进案例分享

    缩进通常是指在文档中缩进单词,空格或行以遵循文档的样式规则,或者可以用来解释编写文档或代码时应使用的距离或应使用的空格.不过缩进在Python中的作用有哪些?在Python中缩进是最独特的功能之一,可 ...

  9. ux设计中的各种地图_移动应用程序设计中的常见UX错误

    ux设计中的各种地图 Have you ever tried a new app, only to realize you have no idea how to use it? 您是否曾经尝试过一个 ...

最新文章

  1. [SqlServer]数据库中自定义拆分字符串函数Split()
  2. pytest+allure框架搭建(MacOS)
  3. 分布式监控报警平台Centreon之:Centreon安装(1)
  4. 怎样利用细碎时间达到整体学习的效果
  5. rowmapper_Spring Integration Jdbc RowMapper示例
  6. 完整解决方案:让你的IIS 支持PHP方法
  7. arcgis两点之间连线_使用ArcGIS制作城市关系强度图(附数据下载)
  8. 用计算机弹猪猪侠数字,猪猪侠之挑战数字
  9. java sbt二叉树,Treap——堆和二叉树的完美结合,性价比极值的搜索树
  10. Caused by: java.lang.ClassNotFoundException: backtype.storm.topology.IRichSpout
  11. 危害移动数据安全的风险有哪些?
  12. VMware16安装win7 x64 虚拟机
  13. 语音识别语言模型和拼音字典文件制作
  14. CentOS7.5 安装mysql
  15. 超全面!新晋设计神器Figma 深度评测
  16. ABP框架官网例子实践(2)(ASP.NET core+Multi Page Web Application)
  17. 网络篇 OSPF的报文分组-45
  18. docker desktop 点击setting 一直转圈圈
  19. 第一阶段:JAVA快速入门
  20. 搭建RP-pppoe服务器

热门文章

  1. 分布式事务,EventBus 解决方案:CAP【中文文档】
  2. 开发者需要理解的分布式原语
  3. C# RichTextBox 实现循环查找关键字
  4. 【ArcGIS微课1000例】0008:ArcGIS中如何设置相对路径?(解决图层前红色的感叹号)
  5. C#委托、事件学习之(一)——委托事件描述
  6. Android之解决ViewPager2+PhotoView滑动图片花屏问题
  7. Android Caused by: java.lang.IllegalArgumentException: column '_id' does not exist
  8. Androidz之clickable
  9. springboot springcloud区别_SpringCloud微服务全家桶-第一篇!为什么要用微服务
  10. 走访近20家代工厂后:近千块的大牌T恤,成本只要几十块