目录

1.简单工厂模式

1.1实现模块

1.2实现模式

1.3 实现代码

1.4 实验结果展示

2.观察者模式

2.1 实现模块

2.2 实现模式

2.3 实现内容

2.4 实现设计:

2.5 相关代码:

2.6 实验结果展示


1.简单工厂模式

1.1实现模块

卖家上传不同种类的书籍

1.2实现模式

以计算机类、科学类、法律类图书的交易为例:

工厂类:Seller

抽象产品类:Book

具体产品类: ScienceBook、ComputerBook、LawBook

1.3 实现代码

1) 定义抽象产品类Book,定义具体产品的公共接口

  1. abstract class Book
  2. {
  3. public abstract void Show();
  4. }

2) 具体产品类继承抽象产品类,定义生产的具体产品

  1. class ScienceBook extends Book
  2. {
  3. @Override
  4. public void Show() {
  5. System.out.println("上传了科学类书籍");
  6. }
  7. }
  1. class ComputerBook extends Book
  2. {
  3. @Override
  4. public void Show() {
  5. System.out.println("上传了计算机类书籍");
  6. }
  7. }
  1. class LawBook extends Book
  2. {
  3. @Override
  4. public void Show() {
  5. System.out.println("上传了法律类书籍");
  6. }
  7. }

3) 定义工厂类Seller,定义创建对应具体产品实例的方法

  1. class Seller
  2. {
  3. public static Book Sell (string bookName)
  4. {
  5. switch (bookName) {
  6. case "科学类书籍":
  7. return new ScienceBook();
  8. break;
  9. case "计算机类书籍":
  10. return new ComputerBook();
  11. break;
  12. case "法律类书籍":
  13. return new LawBook();
  14. break;
  15. default:
  16. return null;
  17. break;
  18. }
  19. }
  20. }

4) 客户端通过实例化工厂类,并调用其创建不同目标产品类的实例

  1. public class SimpleFactoryPattern {
  2. public static void main(String[] args){
  3. Seller mSeller = new Seller();
  4. //卖家上传科学类书籍
  5. try {
  6. mSeller.Sell("科学类书籍").Show();
  7. }catch (NullPointerException e){
  8. System.out.println("没有这一类书籍");
  9. }
  10. //卖家上传计算机类书籍
  11. try {
  12. mSeller.Sell("计算机类书籍").Show();
  13. }catch (NullPointerException e){
  14. System.out.println("没有这一类书籍");
  15. }
  16. //卖家上传法律类书籍
  17. try {
  18. mSeller.Sell("法律类书籍").Show();
  19. }catch (NullPointerException e){
  20. System.out.println("没有这一类书籍");
  21. }
  22. }
  23. }

1.4 实验结果展示

相关前端界面详见2.6小节

2.观察者模式

2.1 实现模块

在前端UI界面中实现修改用户信息、在数据库更新相关信息,并通过服务端回传到UI界面中的功能。

2.2 实现模式

观察者模式,在此模块中,观察者为数据库,观察目标为用户信息。

2.3 实现内容

用户在客户端UI界面中修改用户信息并提交,后台数据库信息对数据进行更新,并且通过服务端传递给客户端,使UI界面中的用户基本信息也发生改变。

模块实现流程图如下:

图2.1 观察者模式实现流程图

2.4 实现设计:

1)在此模块中,我们将实现在前端修改用户基本信息界面作为目标,观察者为数据库与服务端,观察目标为客户端用户信息,通知方法则是用户在UI界面点击提交按钮提交(SubmitInfo(object sender, EventArgs e));

2)随后服务端与数据库作为观察者获取用户更新的信息,传入数据库逐步进行更新(ServiceUser.Update(user),DaoUser.Update(user));

3)接下来由服务端判断数据库中是否正确更新了数据,若正确则更新服务端用户信息,最后在客户端UI界面显示服务端中的用户信息,不正确则不做任何操作。

2.5 相关代码:

1)changePersonalInfo.aspx.cs //修改用户信息并提交

  1. protected void SubmitInfo(object sender, EventArgs e)
  2. {
  3. user.Name = name.Value;
  4. user.Password = this.password.Value;
  5. user.Tel = tel.Value;
  6. user.Address = address.Value;
  7. if (ServiceUser.Update(user) == true)
  8. {
  9. //ServiceUser.userI = user;
  10. JsHelper.AlertAndRedirect("提交成功", "personalInfo.aspx");
  11. }
  12. else
  13. {
  14. JsHelper.AlertAndRedirect("提交失败", "#");
  15. }
  16. }

2)ServerUser.cs //服务端更新

  1. public static bool Update(User user)
  2. {
  3. updateSignal = DaoUser.Update(user);
  4. if (updateSignal == true)
  5. {
  6. ServiceUser.user = user;
  7. }
  8. return updateSignal;
  9. }

3)DaoUser.cs //数据库端更新

  1. public static bool Update(User user)
  2. {
  3. bool result = false;
  4. string sql = string.Format("update UserTab set name='{0}',password='{1}',tel='{2}',address='{3}' where id = 2019302110281", user.Name, user.Password, user.Tel, user.Address);
  5. int i = SqlHelper.ExecuteNonQuery(Conn, System.Data.CommandType.Text,sql);
  6. if (i > 0)
  7. {
  8. result = true;
  9. }
  10. return result;
  11. }

4)changePersonalInfo.aspx.cs //用户修改界面显示

  1. protected void Page_Init(object sender, EventArgs e)
  2. {
  3. user = ServiceUser.userI;
  4. this.name.Value = user.Name;
  5. this.password.Value = user.Password;
  6. this.tel.Value = user.Tel;
  7. this.address.Value = user.Address;
  8. }

5)personalInfo.aspx //用户基本信息界面显示

  1. protected void Page_Load(object sender, EventArgs e)
  2. {
  3. User user = ServiceUser.userI;
  4. this.name.InnerText = user.Name;
  5. this.password.InnerText = user.Password;
  6. this.tel.InnerText = user.Tel;
  7. this.address.InnerText = user.Address;
  8. }

2.6 实验结果展示

以修改用户基本信息中的密码为例,进行此模块功能实现结果展示。

1)进入

UI界面首页后,点击右上角导航栏中个人信息栏目,即可跳转到用户基本信息页面。

2)进入用户信息页面(此时用户密码为666999)

3) 此时数据库中,该用户的密码亦为“666999”。

4) 点击快捷操作栏目的“修改用户信息”按钮后,即可跳转到用户信息修改页面,修改用户信息。由图可见,此时用户将密码修改为“123456”。

5)点击下方“提交”按钮即可将新的用户信息传输给数据库,更新用户信息。

6)点击“OK”按钮后回到用户信息基本界面,发现此时用户基本信息中的密码已被修改成123456。

7)此时数据库中该用户基本信息中的密码也已被修改成123456。

图2.6 修改后的数据库用户信息

二手书交易系统设计模式实验相关推荐

  1. java计算机毕业设计校园二手书交易系统源码+系统+数据库+lw文档+mybatis+运行部署

    java计算机毕业设计校园二手书交易系统源码+系统+数据库+lw文档+mybatis+运行部署 java计算机毕业设计校园二手书交易系统源码+系统+数据库+lw文档+mybatis+运行部署 本源码技 ...

  2. (附源码)计算机毕业设计ssm二手书交易系统

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

  3. 基于php二手书交易系统,二手书交易系统论文.doc

    二手书交易系统论文.doc 二手书交易系统论文 导读:就爱阅读网友为您分享以下"二手书交易系统论文"资讯,希望对您有所帮助,感谢您对92的支持! 郑州大学西亚斯国际学院 本科毕业论 ...

  4. mysql开发二手书籍交易_基于PHP+MySQL二手书交易系统

    随着时代的变迁和人们的对知识的汲取,人们需要不断的购买一些新的图书来进行学习,但是这些图书在使用过一点时间之后其价值也会在拥有者手中变的没有那么高了,但是对于没有阅读和使用过这本书的人来说其还是具有更 ...

  5. 计算机毕业设计之二手书交易系统

    基于Springboot框架的二手书交易系统.它是在Windows下,以MYSQL为数据库开发平台,Tomcat网络信息服务作为应用服务器.二手书交易系统的功能已基本实现,主要包括会员.卖家.书籍信息 ...

  6. java+mysql 基于jsp810校园二手书交易系统

    项目编号:jsp810校园二手书交易系统 运行环境: 开发工具:IDEA /Eclipse 数据库:MYSQL5.7 应用服务:Tomcat7/Tomcat8 使用框架:Spring+SpringMV ...

  7. 基于PHP+MySQL二手书交易系统

    随着时代的变迁和人们的对知识的汲取,人们需要不断的购买一些新的图书来进行学习,但是这些图书在使用过一点时间之后其价值也会在拥有者手中变的没有那么高了,但是对于没有阅读和使用过这本书的人来说其还是具有更 ...

  8. 基于SpringBoot的二手书交易系统的设计与实现(源码、数据库、文档)

    作为新兴事物,校园电子商务是,首先是指在校园范围内,其技术手段是校园网,而服务对象是全部师生.主要经营形式为学生自主经营,能够满足多群体生活学习需求,同时具备范围小,安全性高,操作便捷等特点,且可根据 ...

  9. Java+Spring Boot 二手书交易系统

    目录 1 系统简介 2 系统相关技术 2.1 Java EE 2.2 Springboot框架 2.3 Maven技术 2.4 Tomcat服务器 2.5 MySQL 3 需求分析 3.1 需求概述 ...

最新文章

  1. 安卓2.2系统上网设置
  2. UA MATH636 信息论7 高斯信道
  3. oracle distinct用法
  4. 给手机浏览器减负 轻装上阵才能速度制胜
  5. Repeater的嵌套
  6. fastcopy比正常复制快多少_高中三年,每个阶段考多少分才正常?快对比一下
  7. c# npoi 公式不计算_建筑行业计算公式大全,钢筋重量计算公式,不收藏吃亏的是你自己...
  8. SQL基础——DDL、DML、DQL、DCL速览
  9. 使用 Boost 的 IPC 和 MPI 库进行并发编程
  10. 《Effective Python 2nd》——元类与属性
  11. Linux复习-硬盘相关知识点
  12. (JS)蔚蓝网上书店(课本案例)
  13. 2020年写字楼行业发展现状及趋势分析
  14. usb无线网卡断线后找不到网络
  15. 腾讯管家for android,腾讯手机管家(原QQ手机管家)V6.1.0 for Android 官方版
  16. (原创)如何将Nios II硬件和软件合成一个文件(NIOS II)(硬件)(软件)(合并)...
  17. XML - 可扩展标记语言 (Extensible Markup Language)
  18. 第1130期AI100_机器学习日报(2017-10-22)
  19. 微信小程序 - 数据转excel下载并复制链接
  20. 海思Hi3516CV200_Camera芯片产品规格书

热门文章

  1. C# 对接顺丰-丰桥
  2. edd linux,硬盘安装显示 EDD=OFF 解决办法 !
  3. 2019年繁星屠龙1-8窍门_新版《倚天屠龙记》遭惨骂?导演微博回复:不会再翻拍,受伤了...
  4. incredibly用法
  5. 百度定位:IP定位、浏览器定位、SDK辅助定位
  6. html5 小太阳系模型,初学html5太阳系
  7. Java_Josephus problem 约瑟夫环详尽分享
  8. 2019-2020 ICPC, NERC, Southern and Volga Russian Regional Contest
  9. springBoot餐厅店内点餐系统点餐外卖配送餐馆饭店收银系统实现记录一下「源码文档实过程]
  10. 在 java 中 关于final 关键字_在Java中,关于final关键字的说法正确的是