精华内容
下载资源
问答
  • 产品促销策略
    千次阅读
    2019-04-02 11:26:10

    一、导入期
    产品生命周期是指产品从试制成功投入市场开始,直到最后被淘汰退出市场所经历的全部时间。
    产品生命周期的概念说明:
    (1)产品的生命是有限的。
    (2)产品的销售历史可分成数个阶段,营销商在每个阶段均将面临不同的挑战。
    (3)在不同的产品生命周期阶段,产品的利润有上升的时候,也有滑落的时候。
    (4)产品在其生命周期的不同阶段,需要有不同的营销、财务、制造、采购与人力资源策略。
    在导入期,由于新产品刚刚投放市场,企业存在两方面的困难。一方面,消费者与经销商对新产品不了解、不信任,存有戒备心理。另一方面,新产品生产无论是所使用的设备、工艺,还是工人操作技术的熟练程度与规范,都还未定型,存在着许多问题。
    导入期的定价,一般采用高价策略、低价策略或采用满意定价。采用分期付款、特价优待、赠送样品、价格折扣等营销手段。
    具体策略有:
    (1)利用现有产品提携支持。
    (2)利用特殊手段诱使试用。免费供给一段时间;特价优惠或免费示范或试用;免费传授使用、维修技术等。
    (3)利用特殊手段诱使中间商经销。如果取寄售或其他手段,减少中间商进货的风险;给中间商独家经销权;提供广告津贴;派人员协助推销或为其训练推销人员等。
    (4)利用其他促销手段。如进行大规模的广告宣传及其他刺激购买的方法,设法使相关团体中某些头面人物使用其产品,并加以宣传。
    二、增长期
    《企业自动运行系统》认为,进入增长期以后,老顾客重复购买,并且带来了新的顾客,销售量激增,企业利润迅速增长,在这一阶段利润达到最大。随着销售量的增大,产品成本逐步降低,新的竞争者会投入竞争。
    在产品增长期,企业的营销策略的核心是尽可能延长产品的增长期。具体说来,可以采取以下营销策略。
    (1)狠抓产品质量,完善质量保证体系,并以良好的包装装潢与完善的服务与之配合,争创优质名牌产品。
    (2)进一步扩大销售网点,渗透市场和开拓市场,适应广大顾客的需要,增加销售量。
    (3)加强广告宣传,并从介绍产品转向树立产品形象,进一步扩大产品知名度,争创名牌,加强销售服务。
    在这一阶段,企业面临着“高市场占有率”或“高利润率”的选择。一般来说,实施市场扩张策略会减少眼前利润,但加强了企业的市场地位和竞争能力,有利于维持和扩大企业的市场占有率
    三、成熟期
    产品进入成熟期的标志是产品销售增长达到某一点后逐渐放慢销售增长速度。成熟期一般比前几个阶段的时间长,同时,成熟期也向营销机构提出了挑战。
    1、成熟期的3个阶段
    (1)成长中的成熟。此时,由于分销饱和造成销售增长率开始下降。虽然仍有部分潜在购买者继续进入市场,但已没有新的分销渠道可开辟了。
    (2)稳定中的成熟。由于市场已经饱和,使销售趋于稳定。大多数消费者已试用过该产品,未来的销售将受人口增长率和平均需求所支配。
    (3)衰退中的成熟。此时由于购买者开始转向其他产品或替代品,销售的绝对水平开始下降。竞争者都在想方设法(如减价、广告等)打开销路,以摆脱闲境,有些较弱的竞争者开始退出市场。该行业由一些地位牢固的竞争者占据。
    2.成熟期的策略
    这一时期,一些较弱的中小企业开始被淘汰,行业内最终只剩下善于防守的企业。企业可以通过调整市场、调整产品和调整营销组合的策略,使成熟期延长,或使产品生命周期出现再循环。
    (1)调整市场。不是要改变产品本身,而是发现产品的新用途或改变推销方式等,以使产品销售得以扩大。
    (2)调整产品。以产品自身的改变来满足顾客的不同需要,吸引有不同需求的顾客。整体产品概念的任何一层次的改进都可视为产品再推出。
    (3)调整营销组合。即通过对产品、定价、渠道、促销4个市场营销组合因素加以综合改革,刺激销售址的回升。
    五、衰退期
    市场呈现出如下特点:产品销售量由缓慢下降变为迅速下降,消费者的兴趣已完全转移;价格已下降到最低水平;多数企业无利可图,被迫退出市场;留在市场上的企业逐渐减少产品附带服务,削减促销预算。
    企业在处理衰退期产品时,主要面临着三大决策任务:
    1.确定衰退期产品
    确认产品是否进入衰退阶段,要认真地进行市场调査,注意可能存在的一些假象,正确判断产品是否进入衰退期。
    2.确定衰退期产品的策略
    (1)连续策略。连续沿用过去同样的市场、渠道、价格和促销活动,把销售维持在一个低水平上,使产品自行衰退。
    (2)集中策略。将资源集中于最有利的细分市场和渠道中,缩短经营战线,在最有利的市场上获得尽可能多的利润。
    (3)榨取策略。大幅度地降低营销费用,以增加眼前利润。其实这样做也加速了产品的衰退进程。
    3.放弃决策
    (1)必须决定是把产品出售还是转让给别人或者完全抛弃。
    (2)必须决定是迅速还是缓慢地放弃该产品。
    (3)必须决定为从前的顾客保留多少零部件的库存和维修服务。
    (4)必须决定是否做广告以通知顾客。

    更多相关内容
  • 不同产品促销策略的优缺点分析适用于超市管理学、超市管理人员、超市职员等学习参考使用,欢迎大家下载不...该文档为不同产品促销策略的优缺点分析,是一份很不错的参考资料,具有较高参考价值,感兴趣的可以下载看...
  • 耐克产品促销策略分析报告收集.pdf
  • 互联网背景下产品促销策略概论.pdf
  • 红酒团购的产品策略和促销策略的分析报告.doc
  • 红酒团购的产品策略和促销策略分析报告文案.doc
  • Ch12促销产品沟通、促销策略和广告.pptx
  • 07酒店产品促销策略课件.pptx
  • 营销策划模板,适合需要做营销策划方案的朋友参考使用。
  • 营销策划模板,适合需要做营销策划方案的朋友参考使用。
  • 为了规定营销管理、提升经营绩效、特制定本方法,赶快来下载XX产品导入公关策略以及促销活动建议进行学习...该文档为XX产品导入公关策略以及促销活动建议,是一份很不错的参考资料,具有较高参考价值,感兴趣的可以...
  • 当供应商处于供应链节点的买方市场时,通常要求零售商提前支付一定比例购置成本作为订金.针对该问题研究零售商促销努力下存在随机需求的非瞬时变质产品批量订货定价策略,...零售商采取积极促销策略可有效提升自身利润.
  • 2018年10月071DOI:10.19699/j.cnki.issn2096-0298.2018.29.071“悦诗风吟”品牌的促销策略研究宁波工程学院崔菁菁卢黎莉(通讯作者)摘要:本文以“悦诗风吟”企业为研究对象,对“悦诗风吟”企业的现状及公共关系策略...

    2018年10月

    071

    DOI:10.19699/j.cnki.issn2096-0298.2018.29.071

    “悦诗风吟”

    品牌的促销策略研究

    宁波工程学院  崔菁菁  卢黎莉(通讯作者)

    本文以

    “悦诗风吟”

    企业为研究对象,

    “悦诗风吟”

    企业的现状及公共关系策略、

    广

    告策略、

    销售促进策略、

    人员推销策略作简

    单的介绍。

    通过对

    “悦诗风吟”

    企业现状的分析以及当今化妆品行业存在的共性问题进行探究,

    指出

    “悦诗风吟”

    企业在促销方面存在

    的缺陷

    应用促销理论以及联系

    “悦诗风吟”

    企业的特征从公共关系

    销售促进、

    广

    人员销售等方面

    “悦诗风吟”

    企业提供具有

    参考

    意义的建议。

    关键词

    “悦诗风吟”  销售策略  促销策略

    中图分类号

    F274

    文献标识码

    A

    文章编号

    2096-0298(2018)10(b)-071-03

    1 理论基础

    美国西北大学菲利普

    .

    科特勒教授基于

    4P

    理论,

    对于促销作出

    一个较为准确的定义,

    促销是企业用一定的方式来刺激消费者

    和中间商大量地购买某种特定的产品

    [1]

    促销是利用各种促销方式来实现企业的目标,

    传统的促销方

    式主要有

    公共关系、

    人员销售、

    广告和销售促进。

    然而不同的促销

    策略对销售的促进作用各有差异,

    因此,

    企业面对不同的促销情况

    时应作出相对应的促销策略。

    (1)

    公共关系。

    公共关系主要是维护企业的良好形象,

    利用传播媒体的资源

    和平台来提升品牌的知晓度,

    进而以口碑营销的方式来实现企业

    的销售目标

    [2]

    (2)

    广告。

    广告主要是企业向传播媒介付费以宣传本企业的产品,

    并将

    产品信息传递到消费者面前,

    使消费者对广告中的产品信息增加了

    解,

    从而产生好感和购买需求,

    促使企业的产品得以销售进而使企

    业获利。

    (3)

    销售促进。

    企业利用具有刺激性的手段,

    促使消费者和中间商购买大量

    的企业产品。

    销售促进与其他促销方式相比最大优势在于其具有

    直接的阶段性特征。

    (4)

    人员销售。

    一般情况下是采用面对面的沟通方式,

    销售人员向潜在消费

    者介绍本企业的产品以激起消费者的购买欲。

    2 “悦诗风吟”

    企业现有促销策略存在的问题

    处在产品同质化严重和市场竞争异常激烈的

    “悦诗风吟”

    业,

    在促销策略上存在一定问题,

    主要体现在公共关系、

    广告、

    销售

    促进、

    人员推销等问题,

    具体存在问题如下

    2.1 公共关系管理系统不健全

    公共关系管理系统是企业处理客户关系与应对外部危机事件

    的重要管理系统,

    健全的公共关系管理系统对于企业的稳定发展

    具有重要的意义

    [3]

    “悦诗风吟”

    企业对于化妆品的销售缺乏一套规

    范的公共关系管理系统,

    公众对于该化妆品的认知能力差,

    缺乏防

    范意识。

    首先,

    公共关系促销没有形成规范的体系。

    悦诗风吟”

    虽然

    在公共关系促销方面作了很多文章,

    但总体上是一些零七碎八的

    方法策略,

    没有形成完整的实施体系,

    也没有形成详细的步骤去

    执行,

    因此在实际的操作过程中肯定会出现运转不顺、

    效益不高

    等情况。

    其次,

    公共关系没有被重点关注。

    品牌建设是化妆品线上发展

    很关键的一步,

    而口碑营销又是品牌建设的核心。

    一旦顾客对产品

    产生

    了疑问,

    而企业没有及时予以回复,

    也没有专业的公关体系来

    澄清,

    那么企业的信誉就会降低,

    进而无法完善地处理其所带来的

    其他负面影响。

    最后,

    传播媒体预警不够完善。

    悦诗风吟”

    在实施公关策略时

    只考虑到眼前的市场状况,

    没有未雨绸缪的意识,

    更何况当今社会

    正在高速发展,

    消费者的防范意识加强以及社会媒介曝光所产生

    的不良影响增大,

    致使

    “悦诗风吟”

    企业目不暇接,

    因此应继续完善

    公共关系体系,

    以更好地服务于企业。

    2.2 广告策略实施不到位

    “悦诗风吟”

    企业的广告策略实施方式存在缺陷,

    主要体现

    在:

    广告目标定位不精确、

    售点广告管理不统一、

    户外媒体广告投入

    强度不够等缺陷。

    2.2.1

    广告目标定位不精确

    首先,

    广告目标定位在于提升消费者对企业品牌的知晓度、

    提高企业品牌的知名度、

    宣传初期促销活动的短期效益增加等,

    “悦诗风吟”

    企业在实际操作过程中却存在目标定位不精确的情

    况;

    其次,

    应怎样利用广告媒体,

    规划出优质的广告,

    需要根据广告

    的目标、

    成本以及广告所产生的效益来分析

    而且还应该想到产品

    自身所具有的属性问题

    [4]

    2.2.2

    售点广告管理不统一

    “悦诗风吟”

    在全国各地的大商场里共有近千个实体专售店,

    然而由于企业内部宣传的方式不规范,

    员工的实际操作能力有限,

    渠道商的强制性管理等原因,

    致使企业终端的形象不规范,

    在同一

    座城市

    不同渠道商的终端售点广告出现不统一、

    不规范的状况。

    2.2.3

    户外媒体广告投入强度不够

    虽然在公交车、

    地铁及电梯的移动广告上都投放了广告,

    但这

    些广告仅仅是悦诗风吟企业的某些子企业自行投放的,

    悦诗风

    吟”

    企业总部并没有具体的实施方案去执行,

    况且这对于竞品来

    说,

    这样的投放力度所产生的效果微乎其微,

    势必会影响

    “悦诗风

    吟”

    企业在化妆品市场上的竞争

    力。

    2.3 销售促进实施程序不完善

    无论哪个化妆品企业都想在零售市场上占据一块属于自己的

    份额,

    占据市场就必须扩大销售促进这一块的投入比例。

    当然,

    “悦诗风吟”

    企业也紧跟时代的潮流,

    通过现金折扣、

    赠品赠送、

    员促销等花样百出的促销方式,

    目的是为了扩大销售额的比例在

    化妆品市场占据主导地位。

    但是企业在实际着手过程中往往只关

    展开全文
  • 首先假设在由零售商主导的供应链中, 制造商的低碳声誉和零售商的促销都能增加产品的需求, 减排对制造商的低碳声誉有正面影响; 然后运用微分博弈理论, 比较了不合作、成本分担契约以及合作3 个契约对供应链成员的影响...
  • 产品策略产品产品生命周期、新产品开发产品策略产品产品生命周期、新产品开发产品策略产品产品生命周期、新产品开发
  • 北美零售商百思买在北美的销售活动非常活跃产品总数达到3万多种产品的价格也随地区和市场条件而异由于产品种类繁多成本变化比较频繁一年之中变化可达四次之多结果每年的调价次数高达12万次最让高管头疼的是定价促销...
  • 基于零售商在产品出现缺货时,需采用被动产品替代行为的现象。该文提出一种主动替代策略。...同时通过对该文模型与被动替代策略进行比较,显示主动替代策略对于产品替代度大的产品能进一步提高零售商整个周期的效益。
  • 4.3 促销策略 20 4.4 渠道策略 21 5结论和建议 22 5.1结论 22 5.2建议 22 致 谢 23 参考文献 24 1 绪论 1.1研究的背景 电子商务作为一种新兴的商务模式,为世界经济打开了一个新的市场,人类的生活方式也由此而发生...
  • 策略模式和工厂模式在促销系统下的应用标签: 设计模式 策略模式 工厂模式 促销系统 php设计模式为我们提供了在某些应用场景下特定问题的解决方案,今天我们利用策略模式和工厂模式实现一个简单的促销系统。...

    策略模式和工厂模式在促销系统下的应用

    标签: 设计模式 策略模式 工厂模式 促销系统 php

    设计模式为我们提供了在某些应用场景下特定问题的解决方案,今天我们利用策略模式和工厂模式实现一个简单的促销系统。

    实现语言:PHP

    我们先来回顾一下策略模式和工厂模式的基本知识

    策略模式

    Gof 对策略模式的作用的说明如下

    定义一系列的算法,把他们一个个封装起来,并且使他们可以相互替换。本模式使得算法可独立于他的客户而变化。

    策略模式对算法进行抽象,使得类可以方便地实现不同的算法,而调用他的客户端完全感觉不出来。

    工厂模式

    Gof 整理的工厂模式主要有抽象工厂模式和工厂方法模式,大家还经常提到一种简单工厂模式,工厂模式将类的创建进行封装,使得类的创建和使用可以相互分离,独立变化。

    问题系统描述

    要实现一个促销系统,实现对单件产品和购物车产品集合的促销。针对单件产品,促销策略有降价、打折、赠品,限制条件有无条件限制、商品满足一定价格;针对购物车产品集合,促销策略有打折、降价、赠品、低价免单、免邮,限制条件有无条件限制、商品集合总价满一定价格、商品集合满一定数量。

    基本数据表及类设计

    促销系统核心数据表设计

    promotion表,存储信息包括促销类别(针对单件产品的促销活动还是针对产品集合的促销活动),优惠策略,限制条件。

    促销系统核心类设计

    Promotion 类,对应promotion数据表,实现某个限制条件下针对单件产品或产品集合的某个促销策略。

    Benefit 系列类,提供在产品和产品集合上不同的促销优惠的算法。

    Checkout 系列类,提供在产品和产品集合上不同的限制条件的算法。

    除了以上核心类类外,还有以下基础类,比如Product(产品类,实现一件产品的具体功能)、Collection(集合类,某些类对象的集合,可以继承Collection实现比如产品集合等具体集合类)。

    促销系统设计思路

    通过以上分析,我们知道实现促销的对象有两个:单件产品和产品集合;主要功能也有两个:判断是否满足限制条件和实现某种促销优惠。限制条件和促销优惠这两个功能具有稳定性,具体实现算法具有可变性。这样我们可以针对限制条件和促销优惠抽象出来其接口,使用策略模式进行封装,使得判断条件和促销优惠的算法可以独立于客户端进行变化和增减,并通过工厂模式创建具体算法实例。我们还应该设计针对 Promotion 类接口,抽象出来提供给客户端调用算法的方法。

    促销系统实现

    接口设计

    interface Promotion

    {

    /*

    * Promotion 类的接口,标注 Promotion 类向系统提供的具体功能

    */

    //返回促销策略的类别信息

    public function getBenefit();

    //返回促销策略的值

    public function getBenefitValue();

    //返回限制条件的信息

    public function getLimit();

    //返回限制条件的值

    public function getLimitValue();

    //创建此次促销产生的优惠信息的对象

    public function makeBenefit($attribute);

    //判断某个产品集合是否满足促狭的限制条件

    public function itemsCheckout(Collection $items, $limitValue);

    //判断某个产品是否满足促销的限制条件

    public function productCheckout(Product $product, $limitValue);

    //针对某个产品集合计算促销策略

    public function itemsPromotionCalculate(Collection $items);

    //针对某个产品计算促销策略

    public function productPromotionCalculate(Product $product);

    }

    interface PromotionBenefit{

    /*

    * 促销优惠策略的接口,提供针对产品集合和单件产品的促销优惠的方法

    */

    // 计算产品集合的促销优惠

    public function itemsPromotionCalculate(Promotion $promotion, Collection $items);

    // 计算单件产品的促销优惠

    public function productPromotionCalculate(Promotion $promotion, Product $product);

    }

    interface PromotionCheckout{

    /*

    * 促销限制条件的接口,提供针对产品集合和单件产品的判断限制条件方法

    */

    //判断产品集合的限制条件

    public function itemsCheckout(Collection $items, $limitValue);

    //判断单件产品的限制条件

    public function productCheckout(Product $product, $limitValue);

    }

    限制条件策略的实现

    根据上面的限制条件策略的接口,接下来我们来实现无限制条件、满一定价格、满一定数目这些限制条件的策略

    /*

    * 实现无条件限制策略,因为无条件限制,所以接口的两个方法均直接返回true

    */

    class CheckoutNone implements PromotionCheckout{

    public function itemsCheckout(Collection $items, $limitValue)

    {

    return true;

    }

    public function productCheckout(Product $product, $limitValue)

    {

    return true;

    }

    }

    /*

    * 实现对单件商品和商品集合满一定价格的限制条件策略

    */

    class CheckoutFullPrice implements PromotionCheckout{

    public function itemsCheckout(Collection $items, $limitValue)

    {

    return $items->reduce(function($amount, $item){

    return $amount + $item->price * $item->qty;

    }, 0) >= $limitValue;

    }

    public function productCheckout(Product $product, $limitValue)

    {

    return $product->getBasePrice() >= $limitValue;

    }

    }

    /*

    * 实现对商品集合满一定数目的限制条件策略

    */

    class CheckoutFullNumber implements PromotionCheckout{

    public function itemsCheckout(Collection $items, $limitValue)

    {

    return $items->sum('qty') >= $limitValue;

    }

    public function productCheckout(Product $product, $limitValue)

    {

    //因为单件商品没有满足一定价格的限制条件,所以直接返回false

    return false;

    }

    }

    限制条件策略工厂的实现

    我们把限制条件策略类的实例化工作教给工厂类来实现,我们来看一下限制条件策略工厂类的实现

    class PromotionCheckoutFactory{

    private static $_instances;

    /**

    * @return PromotionCheckout

    */

    public static function makePromotionCheckout($limit){

    if(!isset(self::$_instances[$limit])){

    switch($limit){

    case Promotion::LIMIT_NONE : self::$_instances[$limit] = new CheckoutNone(); break;

    case Promotion::LIMIT_FULL_PRICE : self::$_instances[$limit] = new CheckoutFullPrice();break;

    case Promotion::LIMIT_FULL_NUMBER : self::$_instances[$limit] = new CheckoutFullNumber(); break;

    }

    }

    return isset(self::$_instances[$limit]) ? self::$_instances[$limit] : null;

    }

    }

    促销优惠策略的实现

    实现了促销优惠策略的接口,接下来我们就来实现降价、打折、低价免单、赠品、免邮等具体促销优惠策略。

    class BenefitPriceReduction implements PromotionBenefit{

    public function itemsPromotionCalculate(Promotion $promotion, Collection $items)

    {

    /*

    * 实现产品集合的降价促销策略

    */

    if($promoiton->getBenefit() != Promotion::BENEFIT_PRICE_REDUCTION){

    return false;

    }

    $size = max(count($promoiton->getBenefitValue()), count($promoiton->getLimitValue()));

    $benefitValues = array_pad($promoiton->getBenefitValue(), $size, 0);

    $limitValues = array_pad($promoiton->getLimitValue(), $size, false);

    $benefits = array_combine($limitValues, $benefitValues);

    /*

    * 促销支持组合设定,比如这里可以表示满100减10,满200减25,满300减50,则$benefit的值为

    *[

    * 100 => 10,

    * 200 => 25,

    * 300 => 50

    *]

    */

    $attribute = false;

    foreach($benefits as $limitValue => $benefitValue){

    $benefitValue = floatval($benefitValue);

    if($promoiton->itemsCheckout($items, $limitValue) && $benefitValue > 0){

    $goodsAmount = $items->reduce(function($amount, $item){

    return $amount + $item->price * $item->qty;

    }, 0);

    $data = [

    'base_price' => $goodsAmount,

    'old_price' => $goodsAmount,

    'new_price' => round($goodsAmount - $benefitValue, 2),

    'benefit_price' => $benefitValue,

    ];

    if(!$attribute || $attribute['benefit_price'] < $data['benefit_price']){

    $attribute = $data;

    $attribute['select_limit_value'] = $limitValue;

    $attribute['select_benefit_value'] = $benefitValue;

    }

    }

    }

    if($attribute){

    return $promoiton->makeBenefit($attribute);

    }

    return false;

    }

    public function productPromotionCalculate(Promotion $promoiton, Product $product)

    {

    /*

    * 实现单件产品的降价促销策略

    */

    if($promoiton->getBenefit() != Promotion::BENEFIT_PRICE_REDUCTION){

    return false;

    }

    $size = max(count($promoiton->getBenefitValue()), count($promoiton->getLimitValue()));

    $benefitValues = array_pad($promoiton->getBenefitValue(), $size, 0);

    $limitValues = array_pad($promoiton->getLimitValue(), $size, false);

    $benefits = array_combine($limitValues, $benefitValues);

    $attribute = false;

    foreach($benefits as $limitValue => $benefitValue){

    $benefitValue = floatval($benefitValue);

    if($promoiton->productCheckout($product, $limitValue) && $benefitValue > 0){

    $data = [

    'base_price' => $product->getBasePrice(),

    'old_price' => $product->getBasePrice(),

    'new_price' => round( $product->getBasePrice() - $benefitValue, 2),

    'benefit_price' =>$benefitValue,

    ];

    if(!$attribute || $attribute['benefit_price'] < $data['benefit_price']){

    $attribute = $data;

    $attribute['select_limit_value'] = $limitValue;

    $attribute['select_benefit_value'] = $benefitValue;

    }

    }

    }

    if($attribute){

    return $promoiton->makeBenefit($attribute);

    }

    return false;

    }

    }

    class PromotionDiscount implements PromotionBenefit{

    public function itemsPromotionCalculate(Promotion $promotion, Collection $items)

    {

    /*

    * 实现针对组合产品的打折优惠

    */

    ...

    }

    public function productPromotionCalculate(Promotion $promotion, Product $product)

    {

    /*

    * 实现针对单件产品的打折优惠

    */

    ...

    }

    }

    class BenefitLowerFree implements PromotionBenefit{

    public function itemsPromotionCalculate(Promotion $promotion, Collection $items)

    {

    /*

    * 实现针对产品集合的低价免单

    */

    ...

    }

    public function productPromotionCalculate(Promotion $promotion, Product $product)

    {

    /*

    * 单件产品不支持低价免单策略

    */

    return false;

    }

    }

    class BenefitFreeShipping implements PromotionBenefit{

    public function itemsPromotionCalculate(Promoiton $promotion, Collection $items)

    {

    /*

    * 判断产品集合是否满足免邮限制条件

    */

    ...

    }

    public function productPromotionCalculate(Promotion $promotion, Product $product)

    {

    /*

    * 单件产品不支持免邮策略

    */

    return false;

    }

    }

    class BenefitGift implements PromotionBenefit{

    /*

    * @return false | $gift

    * false 此产品集合不满足赠品条件

    * $gift 此产品集合此次促销的赠品

    */

    public function itemsPromotionCalculate(Promotion $promotion, Collection $items)

    {

    /*

    * 实现产品集合的赠品优惠

    */

    ...

    }

    /*

    * @return false | $gift

    * false 此产品不满足赠品条件

    * $gift 此产品集合此次促销的赠品

    */

    public function productPromotionCalculate(Promotion $promotion, Product $product)

    {

    /*

    * 实现单件产品的赠品优惠

    */

    ...

    }

    }

    优惠策略工厂的实现

    我们实现了具体的促销优惠策略,接下来实现优惠策略的工厂

    class PromotionBenefitFactory{

    private static $_instances;

    /**

    * @return PromotionBenefit

    */

    public static function makePromotionStrategy($benefit)

    {

    if(!isset(self::$_instances[$benefit])){

    switch($benefit){

    case Promotion::BENEFIT_DISCOUNT : self::$_instances[$benefit] = new BenefitDiscount(); break;

    case Promotion::BENEFIT_PRICE_REDUCTION : self::$_instances[$benefit] = new BenefitPriceReduction(); break;

    case Promotion::BENEFIT_LOWER_FREE : self::$_instances[$benefit] = new BenefitLowerFree(); break;

    case Promotion::BENEFIT_FREE_SHIPPING : self::$_instances[$benefit] = new BenefitFreeShipping(); break;

    case Promotion::BENEFIT_GIFT : self::$_instances[$benefit] = new BenefitGift(); break;

    }

    }

    return isset(self::$_instances[$benefit]) ? self::$_instances[$benefit] : null;

    }

    }

    Promotion 类的实现

    Promotion 类应该是对应 promotion 表的 ORM, 除此之外,Promotion 类还应该实现 Promotion 接口,实现促销系统所需的方法

    /*

    * Note:PromotionInterface 指的是 Promotion 接口,因为 PHP 不允许类和接口名字一样,所以需要将 Promotion 接口 use 的时候 as 成 PromotionInterface

    */

    class Promotion extends Model implements PromotionInterface

    {

    protected $table = 'promotions';

    protected $primaryKey = 'pmid';

    /**

    * @var PromotionBenefit

    */

    private $promotionStrategy;

    /**

    * @var PromotionCheckout

    */

    private $promotionCheckout;

    const TYPE_PRODUCT = 'product';

    const TYPE_CART = 'cart';

    const LIMIT_NONE = 'no_limit';

    const LIMIT_FULL_PRICE = 'full_price';

    const LIMIT_FULL_NUMBER = 'full_number';

    const BENEFIT_DISCOUNT = 'discount';

    const BENEFIT_PRICE_REDUCTION = 'price_reduction';

    const BENEFIT_LOWER_FREE = 'lower_free';

    const BENEFIT_FREE_SHIPPING = 'free_shipping';

    const BENEFIT_GIFT = 'gift';

    public function __construct()

    {

    parent::__contruct();

    $this->promotionStrategy = PromotionStrategyFactory::makePromotionStrategy($this->getBenefit());

    $this->promotionCheckout = PromotionCheckoutFactory::makePromotionCheckout($this->getLimit());

    }

    public function getBenefit(){

    return $this->benefit;

    }

    /**

    * @return array

    */

    public function getBenefitValue()

    {

    return $this->benefit_value;

    }

    public function getLimit()

    {

    return $this->limit;

    }

    /**

    * @return array

    */

    public function getLimitValue()

    {

    return $this->limit_value;

    }

    public function makeBenefit($attribute)

    {

    return new Benefit($attribute, $this);

    }

    public function itemsPromotionCalculate(Collection $items)

    {

    if($this->promotionStrategy && $this->type == self::TYPE_CART){

    return $this->promotionStrategy->itemsPromotionCalculate($this, $items);

    }

    }

    public function productPromotionCalculate(Product $product)

    {

    if($this->promotionStrategy && $this->type == self::TYPE_PRODUCT){

    return $this->promotionStrategy->productPromotionCalculate($this, $product);

    }

    }

    public function itemsCheckout(Collection $items, $limitValue)

    {

    if($this->promotionCheckout){

    return $this->promotionCheckout->itemsCheckout($items, $limitValue);

    }

    }

    public function productCheckout(Product $product, $limitValue)

    {

    if($this->promotionCheckout){

    return $this->promotionCheckout->productCheckout($product, $limitValue);

    }

    }

    }

    是否应该使用访问者模式

    至此,我们主要利用了策略模式的工厂模式实现了促销系统的主要功能。在实现的过程中我考虑过需不需要使用访问者模式来对代码进行进一步抽象,因为访问者模式的作用是

    表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变的类的前提下定义作用于这些元素的新操作。

    因为我们发现的主要作用对象是单件商品和商品集合,然后我们定义了这两个作用对象上的操作:判断限制条件和进行促销优惠。似乎是可以使用访问者模式进行抽象,将判断限制条件和进行促销优惠的的接口合并成对操作对象的接口,通过在此接口上的扩展实现对判断限制条件和进行促销优惠的扩展。这样做貌似也可以行得通,不过在实例中,将限制条件和促销优惠进行更加具体的抽象,代码更加容易理解,也更加易读,在操作对象上面操作行为的类别相对固定的情况下,使用访问者模式有点过度抽象。

    展开全文
  • 华为智能手机 在我国的市场营销策略 A HUAWEI 产品策略 价格策略 华为智能手机现行 的营销策略 渠道策略 促销策略 产品策略 华为手机是公司产品集中多元化战略的产物为了 实现业务结构转型,华为利用自身在通讯领域的...
  • 首先,通过两次成本加成,考虑产品需求受产品减排量、零售商宣传促销努力及产品零售价格的综合影响,得到供应链分散决策与集中决策情形下的动态均衡策略及减排量的最优轨迹.然后,通过数值算例及灵敏度分析比较两种情形...
  • 【目录】 一、京东搜索数据 二、京东搜索产品新架构 1、搜索新形态:店铺,活动、促销搜索 2、搜索核心形态:商品搜索 3、搜索导航体验:标签属性
  • PromoEngineDemo 实施可扩展促销引擎的电子商务平台演示 该项目的目的是为电子商务应用程序中的促销实现可扩展的引擎。 它允许添加或删除单个和多个产品的促销。... 正确的促销策略的选择通过CheckoutService
  • 价格促销作为互联网上最受欢迎的促销之一,对消费者的购买意愿有一定的影响。 探索价格促销与消费者购买意愿之间的关系及相关... 本研究的结论丰富了相关在线促销的理论研究,也可以帮助网络商家制定有效的促销策略
  • 在市场竞争日渐激烈的环境下,大型连锁超市如何抓住机遇,充分发挥自身优势,制定合理的策略尤为重要。促销是超市的一项重要工作,促销成功与否决定超市的成败,尤其是在消费者拥有更多选择、零售业竞争日趋激烈的...
  • 生活中这种例子太多了,比如购物促销打折的策略、计算税费的策略等等。相应的策略模式也是一种常用的设计模式。本节我们会以电子地图为例,比较工厂模式和策略模式,讲解策略模式的原理。最后结合工厂模式改造策略...

    设计模式之策略模式(Java 实现)

    大家一定都使用过电子地图。在地图中输入出发地和目的地,然后再选取你的出行方式,就可以计算出最优线路以及预估的时长。出行方式有驾车、公交、步行、骑行等。出行方式不同,计算的线路和时间当然也不同。
    其实出行方式换个词就是出行策略。而策略模式就是针对此类问题的设计模式。生活中这种例子太多了,比如购物促销打折的策略、计算税费的策略等等。相应的策略模式也是一种常用的设计模式。本节我们会以电子地图为例,比较工厂模式和策略模式,讲解策略模式的原理。最后结合工厂模式改造策略模式的代码实现,以达到更高的设计目标。

    1. 实现策略模式

    接下来我们就以电子地图为例,讲解如何用策略模式实现。不过先别着急,上一节我们学习了工厂模式,看起来电子地图也可以用工厂模式来实现。所以我们先来看看用工厂模式如何实现。下面的例子为了方便展示,接口入参只有出行方式,省略了出发地和目的地。计算结果是预估时长。

    1.1 工厂模式实现电子地图

    首先我们需要一个策略接口,不同策略实现该接口。再搭配一个策略工厂。客户端代码只需要根据用户的出行方式,让工厂返回具体实现即可,由具体的实现来提供算法计算。以工厂模式实现的电子地图代码如下。
    TravelStrategy 接口代码:

    public interface TravelStrategy {
        int calculateMinCost();
    }
    

    TravelStrategy接口的实现代码:

    public class SelfDrivingStrategy implements TravelStrategy {
        @Override
        public int calculateMinCost() {
            return 30;
        }
    }
    

    TravelStrategyFactory代码:

    public class TravelStrategyFactory {
        public TravelStrategy createTravelStrategy(String travelWay) {
            if ("selfDriving".equals(travelWay)) {
                return new SelfDrivingStrategy();
            } if ("bicycle".equals(travelWay)) {
                return new BicycleStrategy();
            } else {
                return new PublicTransportStrategy();
            }
        }
    }
    

    TravelService 对外提供计算方法,通过工厂生成所需要的 strategy。代码如下:

    public class TravelService {
        private TravelStrategyFactory travelStrategyFactory = new TravelStrategyFactory();
    
        public int calculateMinCost(String travelWay) {
            TravelStrategy travelStrategy = travelStrategyFactory.createTravelStrategy(travelWay);
            return travelStrategy.calculateMinCost();
        }
    }
    

    代码结构和我们上一节讲解的音乐推荐器几乎一模一样。看似也很好地解决了我们的设计问题。接下来我们看看如何用策略模式解决这个问题,然后我们再对两种模式做对比。

    1.2 策略模式实现电子地图

    使用策略模式,需要增加一个策略上下文类(Context)。Context类持有策略实现的引用,并且对外提供计算方法。Context类根据持有策略的不同,实现不同的计算逻辑。客户端代码只需要调用 Context 类的计算方法即可。如果想切换策略实现,那么只需要改变Context类持有的策略实现即可。
    TravelStrategy 接口和实现的代码不变,请参照上面工厂模式中给出的代码。其他代码如下:
    StrategyContext 类:

    public class StrategyContext {
        private TravelStrategy strategy;
    
        public StrategyContext(TravelStrategy strategy) {
            this.strategy = strategy;
        }
    
        public int calculateMinCost(){
            return strategy.calculateMinCost();
        }
    

    StrategyContext 持有某种 TravelStrategy 的实现,它对外提供的calculateMinCost 方法,实际是对 TravelStrategy 做了一层代理。想切换不同算法的时候,只需更改 StrategyContext 持有的 TravelStrategy 实现。

    TravelService 对外提供计算方法,代码如下:

    public class TravelService {
        private StrategyContext strategyContext;
    
        public int calculateMinCost(String travelWay){
    
            if ("selfDriving".equals(travelWay)) {
                strategyContext = new StrategyContext(new SelfDrivingStrategy());
            } if ("bicycle".equals(travelWay)) {
                strategyContext = new StrategyContext(new BicycleStrategy());
            } else {
                strategyContext = new StrategyContext(new PublicTransportStrategy());
            }
    
            return strategyContext.calculateMinCost();
        }
    }
    

    可以看到 TravelService 中只会和 Context 打交道,初始化 Context 时,根据不同的出行方式,设置不同的策略。看到这里你是不是会有疑问,使用工厂模式消除了客户端代码的条件语句。怎么使用策略模式,条件语句又回来了?别急,我们继续向下看。

    最后我们看一下策略模式的类图:
    在这里插入图片描述

    2. 策略模式优缺点

    2.1 优点

    1. 使用策略模式,可以根据策略接口,定义一系列可供复用的算法或者行为;
    2. 调用方只需要持有Context的引用即可。而无需知道具体的策略实现。满足迪米特法则;
    3. Context在策略的方法之外可以做一些通用的切面逻辑。

    GOF的《设计模式》著作中认为策略模式可以消除一些条件语句,我对此持怀疑态度。正如上面的例子,虽然由于Context在初始化的时候已经指定了策略实现,在计算逻辑中不需要根据条件选择逻辑分支。但是,客户端代码在初始化Context的时候,如何判断应该传入哪个策略实现呢?其实在客户端代码或者别的地方还是缺少不了条件判断。所以这里消除条件语句,只是针对算法逻辑的条件判断。

    第一个优点是策略模式解决的核心问题。但其实工厂模式也是可以做到的。第二点,我认为很重要,客户端代码只需要和 Context 打交道即可,避免了和不同策略类、工厂类的接触。工厂模式中,客户端代码需要知道工厂类和产品类,两个类。正好复习一下迪米特法则,如果两个类没有必要直接通信,那么两个类就没有必要相互作用。可以通过第三方来间接调用。

    2.2 缺点

    1. 客户端代码需要知道不同的策略以及如何选择策略。因此可以看到上面的客户端代码有着丑陋的条件判断;
    2. 由于策略类实现同样的接口,所以参数列表要保持一致,但可能并不是所有的策略都需要全部参数

    3. 策略模式与工厂模式结合使用

    针对第一个缺点。我们可以通过策略模式与工厂模式结合使用来改进。通过进一步封装,消除客户端代码的条件选择。

    我们修改一下StrategyContext类,代码如下:

    public class StrategyContext {
        private TravelStrategy strategy;
    
        public StrategyContext(String travelWay) {
            if ("selfDriving".equals(travelWay)) {
                strategy = new SelfDrivingStrategy();
            } if ("bicycle".equals(travelWay)) {
                strategy = new BicycleStrategy();
            } else {
                strategy = new PublicTransportStrategy();
            }
        }
    
        public int calculateMinCost(){
            return strategy.calculateMinCost();
        }
    }
    

    可以看到我们初始化的逻辑和工厂的逻辑很相似。这样条件判断就提炼到 Context 类中了。而客户端代码将会简洁很多,只需要在初始化 StrategyContext 时,传入相应的出行方式即可。代码如下:

    public class TravelService {
        private StrategyContext strategyContext;
    
        public int calculateMinCost(String travelWay){
    
            strategyContext = new StrategyContext(travelWay);
    
            return strategyContext.calculateMinCost();
        }
    }
    

    改进后,客户端代码现在已经完全不知道策略对象的存在了。条件判断也被消除了。其实很多时候我们都是通过搭配不同设计模式来达到我们的设计目标的。

    策略+工厂模式类图如下:
    在这里插入图片描述

    4. 策略模式适用场景

    当存在多种逻辑不同,但属于同一类型的行为或者算法时,可以考虑使用策略模式。以此来消除你算法代码中的条件判断。同时让你的代码满足多种设计原则。

    很多时候,工厂模式和策略模式都可以为你解决同类问题。但你要想清楚,你想要的是一个对象,还是仅仅想要一个计算结果。如果你需要的是一个对象,并且想用它做很多事情。那么请使用工厂模式。而你仅仅想要一个特定算法的计算结果,那么请使用策略模式。

    策略模式属于对象行为模式,而工厂属于创建型模式。策略模式和工厂模式对比如下:
    在这里插入图片描述

    展开全文
  • 从前火热的线下促销转移到线上又是另一番风味,那么线上电商促销活动该怎么做,又该如何吸引人呢?
  • 产品低碳度和商誉作为状态变量, 综合考虑价格和非价格因素对市场需求的多重影响, 考察并比较不同决策下供应链的反馈均衡策略, 结合数值模拟, 对相关参数进行敏感性分析. 研究发现: 集中式决策可促使供应链实现...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,547
精华内容 6,218
热门标签
关键字:

产品促销策略