欢迎进入上海阳合供应链管理有限公司!
  •  13472705338 

  • 果蔬类自动化立体仓库的货位优化研究
  • 高职院校化学药品仓库管理
  • 装备仓库管理系统的设计与实现
  • 自动化立体高架仓库的消防设计研究
  • 某仓库建筑预作用喷水灭火系统设计探讨
  • 甲类危险化学品仓库调研及管理研究
  • 最新动态

    当前位置:首页 >> 走进阳合 >> 新闻资讯 >>   资讯详细新闻资讯

    策略模式在仓库管理系统中的设计和应用

      信息来源:   发布时间:2021-12-03  点击数:

    1 仓库管理系统描述

    仓库管理系统作为一款计算机管理系统软件, 主要为企业工厂提供便捷、强大的仓库管理解决方案。广泛适用于:工厂中的材料采购入库、生产发料领料;批发零售公司的商品采购入库、出库记账;办公室物品保管、分发、借出、归还等。系统结构如图1所示。

    图1 系统结构图

    图1 系统结构图  下载原图


    2 系统设计中基础资料模块的维护问题

    仓库管理系统中基础资料窗口都有相同的功能, 比如:增加、修改、删除、查询、导出、打印等, 同时界面中要显示基础资料的详细信息。如果每个资料都要创建一个窗体、每个窗体完成一个资料信息的维护工作, 势必程序中会有许多类似重复的代码, 如果资料操作窗口中的功能、控件需要添加修改, 如显示控件由TDBGrid改为TDBGrid EH以实现数据的自动排序, 那所有的资料窗口都要改, 必然会导致系统维护的复杂性和重复性。使用同一个界面窗口, 根据不用资料特点, 使用不同的策略处理相应的数据, 势必会减少软件的维护量, 提高代码效率。

    3 策略 (Strategy) 设计模式分析

    策略模式的用意是针对一组算法, 将每一个算法封装到具有共同接口的独立的类中, 从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。

    使用策略模式可以把行为和环境分割开来。环境类负责维持和查询行为类, 各种算法则在具体策略类 (Concrete Strategy) 中提供。由于算法和环境独立开来, 算法的增减、修改都不会影响环境和客户端。当添加一个具体资料时, 只需要实现新的策略类, 并在客户端登记即可。策略模式相当于“可插入式 (Pluggable) 的算法”。

    下面是一个示意性的策略模式结构图:

    图2 策略模式结构图

    图2 策略模式结构图  下载原图


    环境 (Context) 角色:持有一个Strategy类的引用。

    抽象策略 (IStrategy) 角色:这是一个抽象角色, 通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口。

    具体策略 (TConcrete Strategy) 角色:包装了相关的算法或行为。

    使用场合:

    1) 如果在一个系统里面有许多类, 它们之间的区别仅在于它们的行为, 那么使用策略模式可以动态地让一个对象在许多行为中选择一种行为。

    2) 一个系统需要动态地在几种算法中选择一种。那么这些算法可以包装到一个个的具体算法类里面, 而这些具体算法类都是一个抽象算法类的子类。换言之, 这些具体算法类均有统一的接口, 由于多态性原则, 客户端可以选择使用任何一个具体算法类, 并只持有一个数据类型是抽象算法类的对象。

    3) 一个系统的算法使用的数据不可以让客户端知道。策略模式可以避免让客户端涉及到不必要接触到的复杂的和只与算法有关的数据。

    4) 如果一个对象有很多的行为, 如果不用恰当的模式, 这些行为就只好使用多重的条件选择语句来实现。此时, 使用策略模式, 把这些行为转移到相应的具体策略类里面, 就可以避免使用难以维护的多重条件选择语句, 并体现面向对象设计的概念。

    4 策略模式在基础资料管理模块中的设计

    1) 基础资料抽象策略接口的设计

    基础资料的操作主要有:添加、修改、删除等。所以接口可以设计成:

    图3 抽象策略接口的设计

    图3 抽象策略接口的设计  下载原图


    2) 基础资料环境的设计

    由于每个基础资料都有相同的操作, 可以定义一个基础窗口, 放置所有的操作, 由其作为Context, 负责调用每个策略的具体行为。

    图4 窗口界面

    图4 窗口界面  下载原图


    3) 具体资料的设计

    每个具体策略只需实现IStrategy接口即可, 如:

    图5 具体资料的设计

    图5 具体资料的设计  下载原图


    5 策略模式在基础资料管理模块中的应用

    1) 基础资料中策略相关类

    所有的策略都继承至TBase ADOHandle, TBase ADOHandle的父类TADOHandle只是对数据库操作的一个简单封装。

    TADOHandle类图和TBase ADOHandle类图:

    图6 TADOHandle类图和TBase ADOHandle类图

    图6 TADOHandle类图和TBase ADOHandle类图  下载原图


    基础资料操作的数据都封装在TBase ADOData中。

    策略模式中Context由基础窗口类Tfrm Special Form来实现, 基础窗口类持有一个TSpecial Form Handle对象, 而具体的策略就包含TSpecial Form Handle对象中。Tfrm Special Form调用TSpecial Form Handle来实现具体的业务逻辑, 而TSpecial Form Handle只是对策略接口的一个封装。

    2) 基础资料中策略模式的应用

    用户界面层对基础资料的操作都是通过TSpecial Info Handle类的Info Handle函数实现的, Info Handle根据传入的基础资料类型TSpecial Info Type把相应的策略传给地TSpecial Form Handle。

    如图8 TEmployee Handle为员工的处理策略。

    当Tfrm Special Form处理具体业务, 只要调用TSpecial Form Handle对应的Do操作即可, 如添加资料时, 实际调用了Special FormHandle.Do Add。

    图7 Tspecial Form Handle、Tfrm Special Form类图

    图7 Tspecial Form Handle、Tfrm Special Form类图  下载原图


    图8 员工的处理策略、act Add Execute函数

    图8 员工的处理策略、act Add Execute函数  下载原图


    而Special Form Handle.Do Add调用了资料编辑窗口对象, 编辑窗口对象拥有从TSpecial Form Handle传递的类TBase ADOHandle。当数据添加时则调用此TBase ADOHandle对象。

    图9 Do Add函数和Save Data函数

    图9 Do Add函数和Save Data函数  下载原图


    所以从以上流程可以看出, 资料维护中策略模式并不只是单纯Context和Strategy的交互, 还有许多辅助类用来协助业务的处理。这些负责类的加入也是对策略模式应对负责的业务逻辑更加灵活强大。

    5 总结

    过去几年中, 面向对象领域取得的最大进展之一就是设计模式概念的提出和不断发展, 设计模式由于其实用性而受到欢迎, 在表达上既简单又清楚而受到越来越多的重视。

    本文通过策略模式在仓库管理系统中的设计和应用, 结合本人对众多的仓库管理系统项目的设计、开发、具体的实施过程和管理经验, 在仓库管理系统的基础资料维护设计中应用了策略设计模式, 从而可以解决仓库管理系统中的开发中的一些常见的问题, 对设计类似的仓库管理系统有很强的指导作用, 增强软件设计的可重用性, 提高经济效益。

    随着面向对象的仓库管理系统开发的不断完善, 相信还有新的比较实用的设计模式被不断提出, 对提高仓库管理系统的软件可复用性有很大的借鉴意义。寻找新的设计模式, 或者所谓的挖掘, 是模式团体一直在进行的一项活动。所有结构良好的面向对象的软件体系结构中都包含了许多模式, 发掘其中的模式需要开发者有丰富的设计经验, 而识别已有软件中的设计模式将有助于在设计中使用模式和发现模式。虽然现在已经可以为许多领域提供大量在广度和深度上得以抽象的模式, 但挖掘新模式依然是未来的一个重要工作。

    标签:



    友情链接 :图书管理软件   飞机   软件测试  保温材料   洒水车厂家   装修中式别墅  电锅炉  国际货代     明泰铝业  集成吊顶  成都活动策划公司 货代管理软件 进出口代理清关公司 模具钢  烟雾净化器 工作服价格 工业设计公司 激光打标机   电子签章   植发多少钱  上海展台搭建   网页设计公司   网上商城  电磁流量计   钢制暖气片
    上海货代  定制礼品   香港服务器租用 精品资源网   餐饮项目  纺织品检测
     磁性过滤器  上海物流公司
    膏药OEM 爬架网 远程工作 污水提升器
    防爆配电箱  网店转让   加速器
    沪公网安备31010702002684号 沪ICP备14036201号-29