设计模式

​ 2019年4月,本人所在公司承接了某法院的《在线诉服管理平台》,该系统以当事人在线立案功能为核心,分为案件基本信息查询、案件相关材料上传、开庭信息通知等功能。本人有幸在该项目中担任架构师一职,进行系统的架构设计并进行技术选型。本文以本系统为例描述设计模式在项目中的具体应用。首先为了解决原有案件处理接口与高级法院案件处理接口不兼容问题,采用了适配器模式,实现开闭原则。由于立案身份存在多样性,不同立案身份对应不同的立案流程,采用策略模式方法来实现身份与立案之间的自动匹配。案件审核功能流程复杂,为了减少案件审核功能之间的耦合程度,提升可拓展性,采用责任链模式来进行拆分。系统历时 1 年,于 2020 年成功上线,至今已稳定运行 1 年半,深受法院用户好评。

​ 随着信息化时代的发展,法院信息化已成为时代潮流中不可阻挡的一部分,法院信息化的目的既是为了服务人民,方便老百姓的立案操作,同时也是为了通过信息化技术提升审判的质量与效率,以更直观的方式,进行法院的立案信息细分析。2019年4月,本人所在公司承接某法院的《在线诉服管理系统》项目,该项目以当事人在线立案为核心功能,以更智能、更直观的在线立案界面以及相关提示,代替了原本流程复杂的线下立案流程,避免当事人在不同的窗口来回奔波,也减轻法院工作者的工作负担。当事人可以在家就进行在线立案,实时上传案件相关材料,查看案件进展情况。将材料上传到网上,也便于法院工作者的相关审核操作,防止了材料丢失、漏带的现象。法院工作者,也可以在系统上查看各个时间段法院的立案情况,更直接,更快速的把握法院立案类型趋向。在该项目中,本人担任系统架构师的职责,进行系统的架构设计,技术选型以及相关的职责分配。

​ 软件设计模式,是一套被反复使用、大多数人知晓的经过分类编目的、代码设计经验的综合,他描述了软件设计过程中的一些不断重复发生的问题,以及该问题的解决放啊你。也就是说,它是解决特定问题的一些列套路,是前辈们的代码设计经验的总结,具有一定的普适性。可以反复使用,目的是为了提高代码的可重用性,代码的刻度性和代码的可靠性。软件设计模式大致分为三类:创建型、结构型、行为型。创建型设计模式主要提供灵活创建对象方法,包含工厂方法、抽象工厂、构造器、单例、原型。结构型设计模式主要解决如何组织类和对象,主要博包含适配器,桥接,组合,装饰,外观,享元,代理等模式,行为型设计模式主要解决各类和对象之间如何写作和同行,包含责任链,观察者,命令,策略,状态,解释器,迭代器,中介者,访问者备忘录等设计模式。

本系统使用了多种设计模式来进行问题处理,本文重点阐述其中的策略模式,责任炼模式,适配器模式的使用,及使用效果

1、策略模式

​ 在进行在线立案功能的时候,立案人角色多样,自然人、法人、律师代表自然人、律师代表法人。各个身份立案的时候,立案流程不一致。如果将这些不同的流程写在同一个类中,通过 if-else 或者 case 等条件判断语句来进行选择,将会导致该类复杂程度较高,维护困难。同时如果后期增加立案人角色将会在之前的基础上继续新增,增加类的耦合度容易出错。为此,决定采用策略模式来进行处理。

首先,建立一个立案类,维护一个当事人身份的引用,提供一个可进行相关身份切换的方法,提供一个对应身份立案的方法(绑定公共角色立案接口的立案方法)。再定义一个公共角色立案接口,定义统一的角色立案方法,再根据各个立案人角色,建立各自的具体立案类,来实现公共接口。最后可以通过立案类,利用公共角色立案接口的立案方法,根据不同的身份切换即可实现不同的立案。后期如果需要增加新的角色以及相关立案策略,只需要建立具体的立案类,implents 公共角色接口即可。极大减少了类之间的耦合性,满足开闭原则。

2、责任链模式

案件当事人在网上填写基本信息后,提交立案申请后,案件将进入审核状态。首先根据案件的案件类型,行政、民事、刑事案件,归类到不同的案件处理部门。各个部门依次查看案件中的案件提交材料是否符合相关要求,如果符合则继续进入到案件排期。由专门的工作人员进行通知与指定时间进行开庭。如果将这些操作写在同一个类中,使得这个类职责过多降低代码可理解性当增加新的处理步骤时,又要修改这个类违反开闭原则。因此决定使用责任链模式

首先定义一个案件分类处理接口,该接口定义一个抽象方法,并定义了一个属性指向下一个处理的对象。然后定义一个案件材料审核接口,该接口实现案件材料审核功能并实现了相关处理方法,审核不通过,则提供具体的不通过原因,终止立案过程。审核通过则继续访问下一个处理对象的处理方法。同理处理案件排期操作。最后,定义一个统一处理类,该类创建了所有处理类的对象,根据处理步骤,将下一个处理对象赋值给对应的处理类依次调用。

3、适配器模式

​ 随着法院需求的变更,原本的案件材料接口只限于当前法院使用,为了满足高级法院的集中管理规范,需要对接高级法院提供的案件材料接口。该接口与之前接口冲突,不能再原有接口的基础上使用该接口。如果单独开发该高级法院提供的案件材料接口,开发量较大,同时可靠性低。为了保证项目的案件材料管理的高质量,决定采用策略模式来兼容该接口。

​ 根据高级人民法院提供的接口API,首先建立一个公共接口,定义对应的接口方法,再根据高级人民法院的要求,生成具体的类,实现具体的方法。接着插入一个适配器抽象类,实现原先本系统的案件管理公共接口类以及对应的方法。再在该抽象类中,定义一个高级人民法院对应的接口引用,在当前的方法中,调用高级人民法院对应的接口方法,以此来实现由原先接口的统一管理。如果后期出现新的需求变更,现有适配器不能满足需求,则可以重新建立一个新的适配器,也可以较快解决问题,提高项目开发效率。

该系统前后开发耗时统计 9 月 于 2020 1 月上线,至今已稳定运行1年余多。截至目前,该诉服系统已兼容3个省份多家法院的在线立案功能。已有 1000 以上法院工作者,在线承接了 300000 以上的网上立案信息。获得了法院工作者和案件当事人的一致好评。不过因为该系统应用了多种设计模式,有一定的学习门槛,有工程师对某些实际模式不熟练,运用略显生疏,导致后期重构和优化的工作时长增加,为此部门内召开会议,对系统中的几个重点案例进行讲解,加快工程师对项目的熟悉程度

​ 实践证明,项目使用了合适软件设计模式,使得业务模块之间耦合度大大降低,代码复用性高,既保证了系统的可靠性也保证了系统的可拓展性。通过这次系统实施,我也看到了自身的不足之处,在未来还会不断地更新知识,完善系统,使得更好地服务法院工作者和案件当事人

Logo

开源、云原生的融合云平台

更多推荐