策略模式 【会员折扣】的工厂模式升级实现

策略模式,

顾名思义, 就策略而言, 很简单很好理解, 策略的诞生, 主要是为了适用不同的场景,  设计的不同的应对策略, 方法。

_____________________________________________________________________________________

举个很简单的例子:

在商品中的销售 .... (朋友们别嫌弃, 说我老是拿商场的来举例子, 毕竟我们见的最多, 也频率很高, 所以理解起来更加容易理解, 和发挥其想象空间)。

在销售员结账时, 他可以根据工厂模式对不同的会员类型进行结算(不同的折扣率),  这个大家都知道, 可是很多人看完了策略模式可能又有些不理解, 策略模式到底是什么?

就简单的来说: 针对不同的商场, 不同的节假日, 那么他们或许可能会搞活动(什么满减、全场清仓.... ),  而针对不同的节假日, 这里就讲重点了, 他们肯定会针对不同的节日

进行战略性的营销策略:  什么劳动节1折, 儿童劫6折等等...    (别想多了, 没有商场会这么干- -!!, 除非脑子短路了。)

示例图解:

肛上代码:

改例仍然引用博客中的 第一步 和第 二步 , 定义结算接口, 和用户类。

原文地址: http://www.cnblogs.com/zh7791/p/7086055.html

第三步: 创建策略工厂类, 定义一个结算接口, 和创建一个 参数为 string类型的 会员类型的类构造函数。

第四步: 在CreateContext类中创建不同的策略方法, 针对 元旦节、劳动节、儿童节的具体方法。

第五步: 客户端调用创建并调用策略工厂对象

显示结果

结果如下图,  如何针对不同的节假日, 进行不同的折扣消费活动, 得到的不同金额的消费金额。 

时间: 2024-10-22 15:55:15

策略模式 【会员折扣】的工厂模式升级实现的相关文章

设计模式笔记——策略模式VS简单工厂模式

策略模式VS简单工厂模式   策略模式(Strategy)它定义了算法家族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化,不会影响到使用算法的客户. 1.组成 -抽象策略角色: 策略类,通常由一个接口或者抽象类实现. -具体策略角色:包装了相关的算法和行为. -环境角色:持有一个策略类的引用,最终给客户端调用. 2.应用场景 - 多个类只区别在表现行为不同,可以使用Strategy模式,在运行时动态选择具体要执行的行为. -需要在不同情况下使用不同的策略(算法),或者策略还可能在未来

设计模式之策略模式&简单工厂模式

学习设计模式已经有非常长一段时间了,事实上先前已经敲过一遍了.可是老认为没有学到什么,认识也不够深刻.如今趁着重构机房,再又一次来过,也不晚. 事实上在敲了机房之后,看看模式,事实上,曾经非常难理解.非常难看懂的代码一眼就能够看懂了,趁着有点感觉了.早点收获吧. 简单工厂模式: 简单地说简单工厂模式:非常easy变化的地方,就能够用到简单工厂模式. 实例: 举个样例:我们在逛商场时.正好商场促销,各种优惠活动:有满300返100 ,有打8折的.抽奖等等吧. 促销来讲,各种优惠活动事实上就是变化.

策略模式与简单工厂模式

1,简单工厂模式 a) 有一个抽象的接口用来表示工厂需要生产的产品共性:然后各个具体的产品类实现该抽象接口. b) 工厂只需要持有产品的抽象接口,工厂接收一个 TYPE 参数来决定生产何种产品. c) 对于客户而言,当他需要某种类型的产品时,只需要获得工厂对象,然后将产品的 TYPE参数传递给工厂,由工厂创建他所需要的产品. 2,策略模式 策略,本质上是一种算法.当客户需要处理某件事情时,由于所处的环境不同,他可以采取不同的方式(策略)去处理.因此,客户关注的是如何方便得获取所需的策略. a)

java笔记--策略模式和简单工厂模式

策略模式: --如果朋友您想转载本文章请注明转载地址"http://www.cnblogs.com/XHJT/p/3884781.html "谢谢-- 为什么使用:策略模式主要用于有很多不同的方式来解决同一个问题的情景.如:文件的保存:可保存成txt,也可保存成xml.另外压缩文件.商场的促销策略等是类似的 如何使用:需要定义一个接口或者抽象类来表示各种策略的抽象,由于在选择适当的策略上有些不方便,需要不断地判断需要的类型,因此需要用简单工厂方法来实现判断过程 例子: 用策略模式实现图

设计模式--工厂模式和抽象工厂模式

工厂模式的英文原文是:Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory method lets a class defer instantiation to subclass. 意思是定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到子类. 工厂模式主要是为创建对象提供了接口,工厂模式可分为三类: 简单

简单工厂模式,工厂方法模式,抽象工厂模式

简单工厂模式.抽象工厂模式.工厂方法模式,这三种工厂模式都属于设计模式中的创建型模式,它们在形式和特点上也多少有些相似,其最终目的都是帮我们将对象的实例化部分取出来,进而优化系统架构,增强系统的扩展性,也就是说更好的体现开放封闭原则. 简单工厂模式: 概念: 简单工厂模式是类的创建模式,又叫做静态工厂方法模式,是由一个工厂类根据传入的参量决定创建出哪一种产品类的实例,涉及到工厂角色.抽象产品角色以及具体产品角色. 结构图: 分析: 一: 简单工厂类是整个模式的关键所在,包含了必要的逻辑判断,根据

PHP简单工厂模式、工厂方法模式和抽象工厂模式比较

PHP工厂模式概念:工厂模式是一种类,它具有为您创建对象的某些方法.您可以使用工厂类创建对象,而不直接使用 new.这样,如果您想要更改所创建的对象类型,只需更改该工厂即可.使用该工厂的所有代码会自动更改. 根据抽象程度不同,PHP工厂模式分为:简单工厂模式.工厂方法模式和抽象工厂模式 简单工厂模式: /******代码在原文还是git上都有osgit地址 https://git.oschina.net/mjw/pattern.git  *******/ /** *简单工厂模式与工厂方法模式比较

php模式设计之 工厂模式

承接上篇php模式设计之 单例模式,(虽然好像关系不大).今天讲述第二种基础的模式设计——工厂模式. 那么何为工厂模式? 从名字来看,似乎看不出什么端倪.工厂模式,和生产有关?还是和生产流程有关?难道还和工厂领导有关?和领导秘书有关?秘书...     好了不卖关子了,所谓工厂模式还真和生产有关.生产什么呢?生产出来的是一个实例对象.通过什么设备生产?通过一个工厂类生产.怎么生产呢?工厂类调用自身静态方法来生产对象实例. 工厂模式有一个关键的构造,根据一般原则命名为Factory的静态方法,然而

工厂方法模式And抽象工厂模式

一.工厂方法模式 简单工厂模式的缺陷就是类的创建太过于依赖工厂,一旦需要进行程序扩展,就必须修改工厂类的代码 这违背了背包原则. 而工厂方法模式针对这一问题进行了改进. public interface Sender { public void send(); } public interface producer { public Sender produce(); } public class MailFactory implements producer{ public Sender pr

java设计模式 -------- 创建模式 之 抽象工厂模式

本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020 工厂方法模式和抽象工厂模式不好区分清楚: 工厂方法模式特点: 1. 一个抽象产品类,可以派生出多个具体产品类. 2. 一个抽象工厂类,可以派生出多个具体工厂类. 3. 每个具体工厂类只能创建一个具体产品类的实例. 抽象工厂模式特点: 1. 多个抽象产品类,每个抽象产品类可以派生出多个具体产品类. 2. 一个抽象工厂类,可以派生出多个具体工厂类. 3. 每个具体工厂类可以创建多个