系统架构师论文-设计模式

摘要:
     2015年5月,我单位联合某机场研发了针对国际空运物流的《物流保障系统》,系统以物流公司和机场货站人员对进入货站货物的操作保障为核心,实现企业和机场货站间的数据和文件的信息化传递以及运单的在线可视化跟踪和统计。在项目中我担任系统架构师,负责架构设计工作。
     本文以该系统为例,主要论述了设计模式在项目中的具体应用。着重介绍装饰器、策略、工厂方法三种模式,装饰器模式实现入库文件在不同场景下的扩展功能,提供文件定制的灵活性,策略模式实现航班自动装载不同的装载算法,降低模块耦合度,工厂模式实现数据库不同类型的统一访问,提供系统扩张性,这些模式改善了设计质量和开发效率,最终系统顺利上线、获得了用户的一致好评。

正文:
      2015年5月,我单位联合某机场研发国际空运物流行业的《机场物流保障系统》,以替代原有物流公司和机场货站手工的文件传递和信息操作方式,
      系统以物流公司和机场货站人员操作保障为核心,主要分为运单管理、入库文件管理、入库管理、航班装载管理、统计分析管理、以及使用
Android开发的移动端PDA(移动手持机),物流公司通过在系统录入出港运单,然后根据录入运单自动生成相关的舱单和机场货站需要的入库文件(货物托运书、安检申报单),
物流公司确认之后系统将文件发送给的入库文件模块,然后机场安排相关人员进行入库操作;PDA用于货站人员在货站内部进行运单的收货、入库操作,并将数据传输给Web端供物流企业和货站人员实时查看运单的情况和库内的容量等;航班装载管理用于通过多种算法生成货物需要装载到航空器上的模拟货物摆放方式;统计分析模块,通过自定义生成不同报表。在这个项目中,我担任系统架构师,主要负责系统架构设计相关工作。
       一般来说,设计模式可分为创建型模式、结构型模式、行为型模式三种。创建型模式抽象了实例化过程,它将对象的创建和使用分离,包括工厂方法、抽象工厂、
生成器、原型、单例模式等。结构型模式涉及到如何组合类和对象以获得更大的结构,包括适配器、桥接、装饰、外观、享元、代理模式等。行为型模式实现算法和
对象间的职责分配,包括观察者、策略、责任链、命令模式等。这些模式都是经过反复使用的成熟方法,对优化软件结构、提供软件质量具有重要的指导意义。
     在系统的开发中,我们综合使用多种设计模式。本文着重对装饰器、策略、工厂方法三种模式在该项目的具体介绍。


    一、策略模式
     在系统模块航班装载中,需要将已经入库装备出口的货物进行装机,在将货物装上飞机的过程中涉及到将更多的货物装上飞机,系统通过最优空间算法、最优质量算法、
系统推荐算法(遗传算法),模拟不同算法下的装机数据,实际场物流企业根据现场实际需求来进行选择和调整来确定最终的装机货物,为了解决此问题,我们使用来策略模式将不同的装机方法封装起来,使它们可以相互替换。在策略模式中,我们定义了三个角色:环境角色、抽象策略角色、具体策略角色。环境角色持有一个抽象策略角色StragegyLoadPlan,并通过StragegyLoadPlan来实现一个具体的策略算法。抽象策略角色用来定义具体策略角色所需要实现统一接口;具体算法角色,封装了最优质量、最优空间、推荐算法具体的策略类。通过使用策略模式,用户可以根据不同的装机需求,选择不同的方法来生成不同的装载计划,将算法的实现和算法的选择进行分离,
降低了模块的耦合度,提供了软件的可扩展性和可维护性。


   二、装饰器模式
     根据业务的需求,部分企业在生成入库文件中需要增加一些特殊的内容,例如:某些物流企业对生成的入库文件需要增加企业Logo,某些企业需要将同一主单合并等,为了解决此类问题,
 我们采用装饰器模式,给入库文件动态的增加职责,在装饰器设计模式中,我们定义了被装饰对象基类、具体被装饰对象、装饰者抽象类、装饰者具体类。被装饰基类定义为WarehouseInComponent,定义 了可动态添加职责的接口,具体被装饰对象定义为ConcreteWarehouseInComponent,装饰者抽象类Decorator,维持一个指向具体抽象类的引用,并定义一个一致的接口,具体装饰类根据不同业务场景定义
 不同的类,分别定义为LogoDecorator、AirwayBillDecorator等类,以实现不同场景的功能扩展。通过装饰器模式,我们可以在任何时候实现新的装饰器、给入库文件添加新的职责,无需修改原入库文件生成的代码,比集成方式拥有更好的灵活性。


   三、工厂方法模式
     因系统部分数据的采集需要使用Oracle数据库,而现有系统采用的Mysql数据,在程序设计过程中如果采用原生的操作数据库访问的方法,将会是业务的代码冗余性增加,同时也会增加逻辑复杂性 ,为了解决这一个问题,系统采用工厂方法的模式,我们定义了抽象产品、具体产品、抽象工厂、具体工厂四种角色,抽象产品定义了数据库操作DataAccess类、包括数据库连接、查询执行、事务等;具体产品继承自抽象产品类,根据不同的数据库类型,建立了MysqlDataAccess,OracleDataAccess类,分别进行了不同的具体实现;抽象工厂建立一个DataAccessFactory类,定义了一个通用的返回数据库操作的方法;具体工厂类,根据不同业务返回不同数据库具体的操作类型。通过使用工厂方法模式,可以有效解决不同数据库对软件的影响,当需要添加或者更换新的数据库类型时,不需要修改原有的数据源代码,具有很好的扩展性。
      通过采用以上的设计模式,基本达到了预期的效果。系统自2020年10月上线已运行一年有余,在机场和物流企业的日常使用中,截止到目前已经超过50家企业以及机场货站的使用,获取的物流企业和机场货站的一致好评,
不可避免的,我们在设计过程中也存在一些不足,不少开发人员在实现过程中更趋向原有的过程化设计方法,对模式的使用相对陌生,而且在实际的业务不是单一模式的使用,而是需要多个设计模式的综合应用。在这方面
还是缺少相应的经验。
     实践证明,系统能够顺利上线,并且稳定的运行,与系统选中了合适的设计模式密不可分。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值