基于策略模式的商场价格优惠设计
本文为个人的论文,由于一些原因未能发表,所以拿出来和朋友分享下
注:本文配有源码,如有需要的朋友,请在留言中留下邮箱地址,我会在第一时间发送
本文介绍一种基于策略模式的商场价格优惠管理的改进设计。本设计针对传统策略模式所暴露出来的不足和功能的限制,采用多种设计模式的组合以及灵活的理念,使得功能更加符合用户的需求。
0 引言
以往我们都是使用传统的策略模式来对商场促销功能进行设计,但是由于其传统的缺点和单一的处理策略并不能满足用户同时进行多种策略操作以及客户端和底层代码的灵活调用。所以,这些不足为我们改进策略模式提供了思路。
1 设计思路
1.1 问题的产生
使用传统的策略模式暴露的问题如下:
(1) 策略类数量较多,所有的策略类都需要对外暴露。
(2) 不能灵活处理多种策略的绑定。
(3) 与客户端的交互不够灵活。
1.2 解决方法
针对上述问题,可以通过不同设计模式(工厂方法模式、门面模式和模板模式)的组合以及策略枚举的组合,从而避免上述问题(详见总体设计)。
1.3 设计理念
对于一般的策略模式设计,其只能解决一种策略的实现,对于多种策略的组合有一定的局限性。因此,为了使两种策略思想的实现更加灵活,本设计采用“若干优惠组合策略包含单一优惠策略”的理念。
2 总体设计
2.1 传统模式设计构架
为了更好地说明传统模式和改进模式设计的不同,本文在介绍传统模式的基础上对改进模式进行详细说明。
在传统模式之中,实体类Purchase代表一个销售类与类User构成一对一的关系,其设计类图如图1所示。
传统的处理策略---本设计主要列举了打折策略(Discount)、等价策略(Equal)、满多少送多少策略(UpToUp)、用户积分策略(UserScore)。上述策略必须实现StrategyType接口,目的有两点:1、对策略进行抽象;2、上层代码可以通过接口进行编程。此外,这些策略必须通过一个封装类StrategyContext来使上层代码方便调用相应策略类。其类图如图2所示。
图1
图2
在传统的客户端与底层代码的交互中,往往直接通过调用相关的策略类来进行设计。但是,在策略颇多和逻辑复杂的系统中这样的设计为日后的维护和功能扩展带来了不小的麻烦。下文着重介绍改进后的策略模式。
2.2 改进模式设计构架
首先,在实体类的设计中,增加一个PurchaseBind类,这个类主要负责记录多种策略的组合,并且被类Purchase继承。其类图如图3所示。
图3
在图3的设计中,对金额的操作上并没有使用传统认为的double型,而是采用了易于操作的int型,这样做的原因有:1、int类型比double、float类型处理更方便,不用考虑进位取舍问题(取舍是有误差的);2、目前的二进制存储机制对一些浮点数是无法准确表达的。
其次,在策略类的实现上,上述传统的设计方法并不能满足若干销售策略进行组合的需求,因为上层模块需要调用更新的User对象,而策略类并不能向上层代码传递更新的对象。为了解决这一问题,采用如下设计,由于篇幅限制,本文只列出Discount类的相关设计,其他策略类相似。类图如图4所示。
图4
所以,更新后的User对象就能够通过执行父类StrategyParent中的方法将该对象即时储存在Helper类声明的列表中。上层代码通过调用Helper类中getChangeUser()方法,来获得更新的User对象,进而根据相应组合策略对更新的User对象递归遍历。
同时,为了解决传统策略模式的缺陷:所有的策略类都暴露出去,暴露的越多以后的修改风险也就越大。所以采用一个类似于增加一个配置文件的方法,实现策略类的隐藏,即策略枚举。枚举与策略类进行映射处理,避免高端模块直接访问策略类,同时使用工厂方法模式根据映射产生策略对象,其类图如图5所示。
图5
最后,采用门面模式对高层(客户端)模块与策略工厂模块的动态交互进行优化,从而封装了客户端与策略工厂之间的交互流程。这个流程主要分为以下几个子流程:
(1) 解析在类PurchaseBind中保存在LinkedList链表中的若干策略枚举,将其以参数形式传递给工厂。
(2) 通过递归调用,获得即时更新的User对象,将其与相应策略匹配。
(3) 执行相应方法,用相应策略处理相应User对象。
这一流程封装在类StrategyFacade中,其类图如图6所示:
图6
这样,在传统策略模式的基础上,通过对相应流程进行改进,不仅克服了传统模式的缺点,而且更加符合灵活的设计理念。由于篇幅的限制,只列出了相关设计类图而对代码进行了省略。
3 结束语
本设计遵循灵活的设计理念,通过其他相关设计模式对策略模式进行了优化,将抽象复杂的销售策略相对具体的设计出来。因此,不仅满足了组合策略的需求,而且同时也满足了单一策略的需求,更加有利于对相关销售金额管理系统的日后维护。
参考资料:
[1] 秦小波 设计模式之禅. 北京:机械工业出版社,2010
[2] 程杰 大话设计模式. 北京:清华大学出版社,2007
[3] http://seaizon.iteye.com/blog/753762
[4] 杨年华、张礼平 JAVA类库中的策略模式. 计算机应用与软件,2004
- 大小: 12.7 KB
- 大小: 21.7 KB
- 大小: 21.7 KB
- 大小: 15 KB
- 大小: 12.2 KB
- 大小: 18.2 KB
分享到:
相关推荐
总结,基于策略模式的Java开发商场结算系统充分利用了设计模式的优势,结合C/S架构,为商场运营提供了强大且灵活的后台支持。通过合理组织和设计,不仅提升了系统的功能性和可扩展性,还降低了维护成本,是现代商场...
在当前数字化的时代,线上到线下(Online-to-Offline, O2O)的商业模式已经成为商家吸引消费者的重要手段,其中优惠券的发放和使用是关键策略之一。本毕业设计项目旨在构建一个基于XGBoost算法的O2O优惠券使用预测...
分销电商模式在操作上需要注重分销体系的合理构建和激励机制的设计,以确保分销商的积极性和效率。 在进行电商销售策略的优化时,还应注意以下几点:首先,营销策略应具有灵活性和适应性,能够根据不同市场和消费者...
为了解决这一问题,本文提出了一种新的营销推广视角——“共享纸巾”,并以此为基础探讨软件设计模式在系统开发中的具体应用,旨在构建一套基于共享经济模式,有别于其他互联网思维延伸的商城管理系统。 文章的研究...
《基于众包模式的农村电商末端配送策略研究》是一篇深入探讨如何利用众包模式解决农村电商最后一公里配送问题的研究报告。这篇论文的核心是解决在农村地区,由于地理分布广泛、交通不便等因素导致的传统物流配送难以...
这篇论文“基于电商模式下赣南脐橙的营销策略探究”深入探讨了如何利用电子商务平台提升赣南脐橙的品牌知名度、拓宽市场渠道以及优化销售策略。 首先,电商模式的优势在于能够打破地域限制,让赣南脐橙走向全国乃至...
在营销策略上,O2O模式的定制平台常常利用社交媒体、网络营销等方式吸引并维系客户,通过优惠券、积分系统、会员制度等手段刺激消费,培养用户的忠诚度。 最后,个性服装定制平台的成功也离不开良好的售后服务。...
本文档“基于物联网技术的系统设计模式研究与实践——以商城系统营销策略实现为例”深入探讨了如何利用物联网技术来优化商城系统的营销策略。以下是围绕这个主题的详细知识点: 1. 物联网技术基础: - IoT是通过...
2. **策略模式**:定义各种优惠策略,如折扣计算、满减规则等,使得优惠规则可扩展。 3. **状态模式**:表示优惠券的不同状态(未使用、已使用、已过期),使状态转换更加灵活。 4. **装饰者模式**:在不改变原有...
标题中的“基于策略型消费者的电商平台折扣销售期定价策略研究”主要涉及的是电子商务领域的营销策略,特别是针对消费者行为的定价策略。这一主题的核心是理解消费者如何对价格敏感,并据此制定有效的折扣策略,以在...
【基于Groupon模式的我国经济型酒店网络团购营销策略研究】 Groupon模式,又称为团购模式,是一种在线销售服务,通过聚集消费者共同购买商品或服务,以获得比单个购买时更大的折扣。这种模式在互联网时代迅速崛起,...
《基于复杂科学管理的农村电商模式创新及策略》是一份深入探讨如何运用复杂科学理论来推动农村电子商务发展的研究报告。在当前互联网技术飞速发展的背景下,农村电商正逐渐成为乡村振兴的重要推动力,它不仅有助于农...
政策导向应当支持技术研发,降低电动汽车的购置成本,同时优化充电服务,提高用户体验,比如提供便捷的预约充电服务、合理的充电价格策略以及完善的充电网络。 综上所述,中国电动汽车的商业模式选择应兼顾技术进步...
### 基于CS模式的餐饮管理系统需求分析 #### 一、引言 1.1 **程序开发背景** 在当今社会,随着信息技术的迅速发展,计算机技术的应用日益广泛,尤其是在服务业中的应用变得越来越重要。餐饮行业作为服务业的重要...
在本研究中,作者潘悦和魏云冰基于演化博弈理论,提出了售电商组合增值服务策略的研究模型。他们对“负荷平移”、“以旧换新”以及这两种策略的组合进行了建模,并通过Logit模型动态调整来分析用户的多策略选择行为...
在本文中,我们将深入探讨如何基于MVC(Model-View-Controller)模式设计和开发一个B2B2C(Business-to-Business-to-Consumer)电子商务系统。B2B2C平台是一个融合了企业对企业(B2B)和企业对消费者(B2C)交易模式...
5. 电商运营策略优化建议:基于网易严选的ODM模式特征及SWOT分析,电商企业可以通过以下策略进行优化: - 增强与用户的互动,深入了解用户的个性化需求,实现产品定制化; - 精简供应链,提高供应链的灵活性和响应...