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

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

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 仓库…

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

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

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畅通工程。首先在地图上给你若干个城镇,这些城镇都可以看作点,然后告诉你哪些对城镇之间是有道路直接相连的。最后要解决的是整幅图的连通性问…

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

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

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

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

mysql设置表名字为占位符_这可能是把MySQL存储引擎讲解的最清楚的一篇文章了

存储引擎是MySQL的组件,用于处理不同表类型的SQL操作。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能。使用哪一种引擎可以灵活选择,一个数据库中多个表可以使用不同引擎…

linux开发板显示横向彩虹,给 Linux 终端的输出添加彩虹特效的命令

原标题:给 Linux 终端的输出添加彩虹特效的命令正文如果认为Linux命令行很无聊并且没有任何乐趣,那么您错了,真实的Linux多么有趣和淘气。在本文,我将介绍一个名为“ lolcat ”的实用小工具,该实用工具在终端中产生彩虹…

Delphi 与 DirectX 之 DelphiX(46): TDIB.DoAntiAlias;

本例效果图:代码文件:unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, DIB, StdCtrls;typeTForm1 class(TForm)DXPaintBox1: TDXPaintBox;Button1: TButton;Button2: TButton;procedure Button1Click(Sender: T…

Web API实现微信公众平台开发-服务器验证

背景最近开发微信公众号相关接口,在这里记录下微信公众号相关各项功能的实现。先决条件1、一台可部署web服务的服务器或者云平台(本地可以搞个花生壳域名)。2、一个可以正常使用的微信公众账号,开始的时候使用它的测试号。3、Visu…

每天20分钟,只需一年,一年级学生英语听力达到六年级水平!关键是坚持一点都不难!

导读: 除了语文数学这种常规科目,最让家长们焦虑的就是英语。现在的孩子,英语启蒙都很早,但是对英语的兴趣总是开始还可以,越往后越没动力和兴趣,稍微遇到点挫折就不想坚持了。钱也花了,好老师也…

python爬取论坛付费内容_Python爬虫抓取论坛关键字过程解析

前言: 之前学习了用python爬虫的基本知识,现在计划用爬虫去做一些实际的数据统计功能。由于前段时间演员的诞生带火了几个年轻的实力派演员,想用爬虫程序搜索某论坛中对于某些演员的讨论热度,并按照日期统计每天的讨论量。 这个项…

相对完善的Java通过JDBC操纵mysql的例子

工具类: Code1import java.sql.Connection; 2import java.sql.DriverManager; 3import java.sql.ResultSet; 4import java.sql.SQLException; 5import java.sql.Statement; 6 7 8public final class JDBCUtils { 910 private JDBCUtils(){}11 12 private static Strin…

如何在 ASP.Net Core 中使用 File Providers

ASP.Net Core 为了便于获取文件和文件夹信息,监视文件变更, 在文件系统中提供了一个抽象层:File Providers, 这篇文章将会讨论如何使用 File Providers 。File Provider 抽象层 file prodivers 实现了 IFileProvider 接口&#xf…

对5种主流编程语言的吐槽

不可否认,想要成为一名优秀的程序员确实是需要掌握多种编程语言。通过这几年的自虐式学习,小编也慢慢的掌握了这些编程语言。接下来要为大家,介绍五款让人又爱又恨的编程语言! 1.C 语言 C 语言给人的感觉,就是一位神秘…

WM中的OutLook开发和操作

昨天闲来无视,学习了一下WM的基本开发。看WM有约的那套教程心里痒痒,于是下载了SDK,看看DEMO,在Sample中的示例进行加工。小有一点心得。其实总的来说难度也不是很大,以前没有做过FORM的程序,都是WEB上面的…