软考高项-系统架构师(论文)-设计模式

关于架构师论文:

备考架构师写论文的时候,发现网上可参考的范文很少,初写的时候很是浪费时间。
现在把自己学习的时候,写的论文分享出来,希望能对备考的同学有点帮助


设计模式:

摘要 2019年2月,本人所在的公司承担了一项小区管理系统平台的开发项目,该项目主要是将物联网,云计算等多种技术融合,为小区住户提供安全舒适的小区生活,同时提升小区物业的管理效率。我在该项目中担任系统架构设计师一职,主要负责系统架构设计和部分软件开发工作。本文以该社区管理系统平台为例,主要论述了软件设计模式在该系统开发中的具体应用。在支付模块,我们采用策略模式将不同渠道的支付算法分别封装起来,实现了平台支持不同渠道的支付功能;在数据访问中,我们利用工厂模式,这样针对不同格式的数据实现了轻松转换;在投诉报修模块,我们采用了状态模式,把的复杂判断逻辑提取出来,使得程序变得简单,利于扩展。最终项目成功上线,并获得了客户的一致好评。

正文
2019年2月,本人所在的公司承担了一项小区管理系统平台的开发项目。该项目主要是从小区住户,物业以及开发商三个方向作为出发点,应用了物联网,互联网,云计算,大数据,复杂算法等多种技术,此管理系统平台应用分层架构,分为终端层,应用层,和数据支持层,包括物业管理,小区的安防管理,智能家居,邻里社交,周边服务,在线缴费等服务模块。不同类型的登陆用户,有不同的桌面,小区住户可以通过该系统查看小区安保情况,可以自主缴费,进行报修投诉,查阅周边服务等,为小区住户提供安全的居住环境和智能,便捷的居住体验;物业可以通过该系统及时了解小区的情况,包括小区车辆,电梯运营,公共设施的情况,掌握小区住户的关注点,可以消除信息孤岛,及时解决问题,从而提高物业管理的效率,提升物业管理水平,为开发商创造更大的价值。我在该项目中,担任系统架构设计师的职务,负责系统架构的设计和部分软件的开发工作。
在该系统的开发中,为了更好的实现系统的高内聚低耦合,我们采用了软件设计模式。软件设计模式是被反复使用,大多数人知晓的软件代码设计的经验总结。软件设计模式主要分为三大类:创建型模式,结构型模式,行为型模式。创建型模式主要用于创建对象,做到了软件模块跟对象的创建无关联。常用的创建型模式有:工厂方法模式,原型模式,抽象工厂模式,单例模式和构建器模式5种。结构型模式,主要负责处理类或对象之间的关系,将类和对象进行有效组织,形成良好的体系结构。常见的结构型模式有:组合模式,适配器模式,装饰模式,外观模式,代理模式,享元模式,桥接模式7种。行为模式,主要处理类和对象之间的交互方式,以及如何为类和对象分配职责进行描述,常见的行为型模式有:状态模式,策略模式,命令模式,访问者模式,中间者模式,解释器模式,职责链模式,迭代器模式,备忘录模式,模板方法模式等11种。软件设计模式提高了编码效率,增加了代码的可理解性,保证了代码的可靠型。
在小区管理系统平台的开发项目中,我们综合地采用了多种软件设计模式,本文主要从策略模式,工厂方法模式,状态模式三个模式进行介绍。
一.策略模式
在系统中,设计到住户缴费的功能,目前的线上缴费渠道有多种,如微信,支付宝,银联支付等多种。各个支付渠道的算法又不相同,起初我们用多重条件判断,涉及各个渠道支付实现的算法又包含重条件判断,这样定义后,发现代码不够简洁,也不利于维护,经过分析后,我们选择采用策略模式,首先定义了一个paystrategy接口作为抽象角色,然后定义了如alipaystrategy,wechatpaystrategy,unicompaystrategy具体角色,这些具体实现类里封装了对于支付方式的算法,并且这些类实现paystrategy了接口。定义了paycontextstartegy,该类引用了paystrateg.当web请求支付,并且带有支付方式的pay_code; controller接到请求后,使用paycontextstartegy调用具体的支付类如alipaystategy,wechatpaystategy,uniompaystrategy.通过使用策略模式,我们实现了不同方式的支付自由切换,避免了多次条件判断,利用组合代替继承,将算法的选择和算法的实现分开,降低了程序间的耦合度,具有很好的扩展型和可维护型。
二.工厂模式
在对小区进行管理的过程中,需要对住户信息,车辆信息,公共设施等信息进行采集,而这些信息数据的类型(如excel,xml等)完全不同,造成这些数据导入到数据库里的算法也就不一样。不确定用户会导入什么类型的数据,设计者无法确定实例化哪个类。为解决这一问题,我们使用了工厂模式。首先定义了一个dataimport接口,针对不同类型的数据,分别定义了对于格式的产品类,如exceldataimport,xmldataimport等具体产品类。这些产品类实现了dataimport接口,并且封装了将其类型的数据导入到数据库里的具体算法。Dataimportcreator是抽象工厂类,持有dataimport接口的对象。Exceldataimportcreator,xmldataimportcrator等是具体工厂类,主要功能是生产具体的产品实体,直接在客户端的调用下创建产品实例。通过引入工厂模式,将类的实例化延迟到其子类,这样在有新的类型数据需要加入到数据库时,无需修改接口和客户端。使系统的可扩展型变的非常好,符合高内聚低耦合的设计原则。
三.状态模式
在投诉报修模块,针对住户的投诉报修请求,要显示其当前的状态(未受理,已受理,已解决)。请求的状态改变是按照一定顺序执行的,当用户提交其请求时,显示未受理,物业方查看后,显示已受理,当请求被执行后显示已解决。针对这种场景,我们采用了状态模式。首先定义了一个state接口,然后定义noacceptstate,acceptedstate,settledstate不同的状态模式类,状态模式类实现了state接口,封装了对于状态应该执行的行为。将state作为请求代码中的成员属性,当state状态改变时,触发去执行不同状态的行为。状态模式,对于状态的对象,把状态判断的负责逻辑提取到状态中,允许状态对象对其内部状态发生时改变其行为。这样将状态转换逻辑和状态对象合为一个整体而不是放在繁琐的条件语句中,较好的封装了转换原则。降低了程序的耦合度。
以上软件计模式的使用,基本上实现了预期的效果。项目历时8个月,在2019年10月底顺利上线,运行稳定。总结设计模式的应用,我们发现:首先,设计模式被软件架构设计者,软件分析者,编码人员广泛熟知,大家在沟通交流中,没有障碍,对软件代码的实现方法的把控十分到位;然后,通过使用设计模式,提高了软件的开发效率;其次,也是最重要的一点,这些软件设计模式是被反复使用的,是经典的成熟的解决方案,符合面向对象的设计规范,这样提高了我们代码的标准化,方便日后维护。
需要改进的是,对软件设计模式的理解还不是很透彻,由于各种软件设计模式有相近的地方,我们在设计时,有时候无法很快地决定这个场景用哪个设计模式,需要经过对比,才可以确定下来;并且软件设计模式的应用不是单一的,需要组合起来使用。在这些方面我们还是经验不足。通过这次总结,在以后的项目中,我们会转变结构化的设计思维,使用软件设计模式,使得我们设计的项目可以达到高质量的标准。


说明:

这篇论文质量不高,但是能达到45分(满分75分)的水平。 字数要求,文章结构要求基本达标,创新不足,考试可以达到及格水品。 想写出高质量的文章,需要在这个基础上写出特点,需要多加练习。

你可能感兴趣的:(软考高项-系统架构师,经验分享)