简单工厂的使用(图书管理系统)
Posted singlelcx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单工厂的使用(图书管理系统)相关的知识,希望对你有一定的参考价值。
简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。
场景:有一个图书管理系统,需要进行书本管理,所有对书本的操作都进行归类,大致可以分成入账、预定、借用、续借、归还、领料、清退、转移、核销等操作,每一次的操作认为是一个订单,订单有创建,审批、取消、拒绝等状态、每一个订单包含一个或者以上的书本信息,简单工厂,先根据订单类型来创建完订单,需要先构建好入参,如下所示 strUserDoc 主要是当前操作人信息(用户上下文),strBillDoc为订单信息,订单号、类型、订单状态等,strBooks包含订单的书本信息
//创建订单 var oBill = GetOperationType(strUserDoc, strBillDoc, strBooks); //获取订单类型 var strOperaType =oBillDoc.GetStrValue(TBLBill.PROP_OPERATE_TYPE); //初始化订单 switch (strOperaType) case TBLBill.TYPE_BOOK: oBill = new Book(strUserDoc, strBillDoc, strBooks); break; case TBLBill.TYPE_LEND: oBill = new Lend(strUserDoc, strBillDoc, strBooks); break; case TBLBill.TYPE_RENEW: oBill = new Renew(strUserDoc, strBillDoc, strBooks); break; case TBLBill.TYPE_RETURN: oBill = new Return(strUserDoc, strBillDoc, strBooks); break; case TBLBill.TYPE_CLEAR: oBill = new Clear(strUserDoc, strBillDoc, strBooks); break; case TBLBill.TYPE_DELETE: oBill = new Delete(strUserDoc, strBillDoc, strBooks); break; case TBLBill.TYPE_PICK: oBill = new Pick(strUserDoc, strBillDoc, strBooks); break; case TBLBill.TYPE_MOVE: oBill = new Move(strUserDoc, strBillDoc, strBooks); break; case TBLBill.TYPE_TRANSFER: oBill = new Transfer(strUserDoc, strBillDoc, strBooks); break; case TBLBill.TYPE_RECORD: oBill = new Record(strUserDoc, strBillDoc, strBooks); break; default: oBill.res.ErrCode = "这是什么操作~"; break;
创建订单时,先对当前操作人权限进行验证,操作对象是否能操作对应的数据,文书信息等是否能进行对应的操作等进行一系列验证,验证完毕后,创建好订单,然后在订单中增加书本信息,根据订单的状态,修改对应文书最新状态
/// <summary> /// 基础订单(图书馆操作系统) /// </summary> public abstract class BaseBill #region /// <summary> /// 原始订单信息 /// </summary> public BsonDocument oOriginalBill get; set; /// <summary> /// 处理的订单信息 /// </summary> public BsonDocument oHandleBillDoc get; set; /// <summary> /// 书本信息 /// </summary> public List<BsonDocument> lstBooks get; set; /// <summary> /// 用户上下文 /// </summary> public UserContext userContext get; set; #endregion #region 构造函数 protected BaseBill() protected BaseBill(string strUserDoc, string strBillDoc, string strBooks) this.userContext = new UserContext(strUserDoc); this.oOriginalBill = JsonToBson(strBillDoc); this.oHandleBillDoc = this.oOriginalBill.CopyTo(); this.lstBooks = getBooks(strBooks); #endregion #region 订单基础操作 /// <summary> /// 验证用户是否有权限/合法等 /// </summary> public virtual void ValidateUser() /// <summary> /// 验证物料是否存在,是否能被借出/归还等 /// </summary> public virtual void ValidateBooks() /// <summary> /// 创建订单 /// </summary> public virtual void AddBill() /// <summary> /// 增加订单书本 /// </summary> public virtual void AddDevicesBill() /// <summary> /// 根据订单状态修改竖纹状态 /// </summary> public virtual void ModefyStatus() /// <summary> /// 结果信息发送 /// </summary> public virtual void SendMessage() #endregion /// <summary> /// 预定 /// </summary> public class Book : BaseBill /// <summary> /// 借出操作 /// </summary> public class Lend : BaseBill /// <summary> /// 续借操作 /// </summary> public class Renew : BaseBill /// <summary> /// 归还操作 /// </summary> public class Return : BaseBill /// <summary> /// 核销操作 /// </summary> public class Delete : BaseBill /// <summary> /// 清退操作 /// </summary> public class Clear : BaseBill /// <summary> /// 领料操作 /// </summary> public class Pick : BaseBill /// <summary> /// 入账操作 /// </summary> public class Record : BaseBill
以上是关于简单工厂的使用(图书管理系统)的主要内容,如果未能解决你的问题,请参考以下文章
设计模式之简单工厂模式与策略模式(通过两种模式设计的计算器/java)
设计模式之简单工厂模式与策略模式(通过两种模式设计的计算器/java)
JavaWeb SSM图书管理系统简单版007(源码+sql可直接运行《精品毕设》)主要功能:登录图书类型添加图书类型列表编辑和删除图书上传。图书列表修改密码和退出功能