JAVA算法策略模式之商品打折 满x送x
场景:某超市收银台,营业员根据客户购买的商品和数量向客户收费.
问题:超市某段时间会有打折活动(例如打8折),满XXX元送XXX元活动,满XXX元送XXX积分活动等等.
算法类,可能是打折,满XX送XX等等
package com.hebo.test.designmode.strategy;public abstract class Strategy {//算法方法public abstract void AlgorithmInterface();
}
打折算法实现
package com.hebo.test.designmode.strategy;
/*** 模拟打折类* @author HeBo**/
public class ConcreteStrategyA extends Strategy {@Overridepublic void AlgorithmInterface() {System.out.println("打折算法实现..");}}
模拟满xx送xx元活动
package com.hebo.test.designmode.strategy;
/*** 模拟满xx送xx元活动* @author HeBo**/
public class ConcreteStrategyB extends Strategy {@Overridepublic void AlgorithmInterface() {System.out.println("满XX送XX元算法实现..");}}
模拟满XX元送XX积分
package com.hebo.test.designmode.strategy;
/*** 模拟满XX元送XX积分* @author HeBo**/
public class ConcreteStrategyC extends Strategy {@Overridepublic void AlgorithmInterface() {System.out.println("满XX元送XX积分算法实现..");}}
上下文
package com.hebo.test.designmode.strategy;public class Context {Strategy strategy;public Context(String type){if(type.equals("打折")){strategy = new ConcreteStrategyA();return;}if(type.equals("满就送")){strategy = new ConcreteStrategyB();return;}if(type.equals("送积分")){strategy = new ConcreteStrategyC();return;}}//不使用工厂模式的构造函数public Context(Strategy strategy){this.strategy = strategy;}//上下文接口public void ContextInterface(){strategy.AlgorithmInterface();}
}
测试类
package com.hebo.test.designmode.strategy;
/*** 模拟收银台* @author HeBo**/
public class Test {static Context context;public static void main(String[] args) {context = new Context("打折");context.ContextInterface();context = new Context("满就送");context.ContextInterface();context = new Context("送积分");context.ContextInterface();/*Context不使用工厂模式的测试代码* context = new Context(new ConcreteStrategyA());context.ContextInterface();context = new Context(new ConcreteStrategyB());context.ContextInterface();context = new Context(new ConcreteStrategyC());context.ContextInterface();*/}}
总结:策略模式是一种定义一系列算法的方法,从概念上看,所有这些算法完成的都是相同的工作,只是实现不同,它可以以相同的方式调用所有的算法,减少各种算法类与使用算法类之间的耦合。
策略模式的Strategy类为Context定义了一系列的可供重用的算法和行为。另外一个优点是简化了单元测试,每个算法都有自己的类,可以通过自己单独接口进行测试。
JAVA算法策略模式之商品打折 满x送x相关推荐
- 打折算法 Java_JAVA算法策略模式之商品打折 满x送x
场景:某超市收银台,营业员根据客户购买的商品和数量向客户收费. 问题:超市某段时间会有打折活动(例如打8折),满XXX元送XXX元活动,满XXX元送XXX积分活动等等. 算法类,可能是打折,满XX送X ...
- Java使用策略模式替换掉 if else
Java使用策略模式替换掉 if else 我们的代码中常常大量的使用 if else ,如果条件在不断的增加,我们就需要继续在后面增加if else,代码就会越来越臃肿,可读性差,后期非常不好维护, ...
- Java设计模式-策略模式作业
Java设计模式-策略模式作业,所有类和接口均在一个package内 文章目录 前言 一.作业内容 二.具体实现 1.类图 2.Strategy接口 3.PreCopyStrategy类 4.Post ...
- Java设计模式——策略模式(解决满屏的if/else)
一.业务场景 项目需要对接支付系统,根据不同客户类型会有不同的支付方式,比如:支付宝.微信.银联.云闪付等等其他第三方支付平台,这个时候策略模式就大展身手了. 传统的if/else/switch 等等 ...
- 策略模式--实现商场打折
前言: 上一篇博客中写明了简单工厂的引用,其实这篇博客和上一篇类似,是利用了策略加简单工厂的方法实现的.为了我们的重构可以运用上设计模式,本次运用了客户端的形式展现出来,具体请往下看: 策略模式: 顾 ...
- java设计模式---策略模式
1,什么是策略模式? 策略模式,又叫算法簇模式,就是定义了不同的算法族,并且之间可以互相替换,此模式让算法的变化独立于使用算法的客户. 2,策略模式有什么好处? 策略模式的好处在于你可以动态的改变对象 ...
- JAVA设计模式-策略模式
1.1 需求背景 Background:M公司为某电影院开发了一套影院售票系统,在该系统中需要为不同类型的用户提供不同的电影票打折方式,具体打折方案如下: (1)学生凭学生证可享受票价8折优惠: (2 ...
- java计数器策略模式_策略模式与外观模式 | 学步园
1.策略 :定义不同的 2. 例子:随机生成宠物,并统计各种宠物生成数量. a) 抽象类:PetCreator,用于随机生成宠物. package context; import java.util. ...
- Java设计模式----策略模式(Strategy)
1. 策略模式: 策略模式,也称为政策模式,定义如下: 定义一组算法,将每个算法都封装起来,使他们可以相互转化 2. 策略模式的原理是面向对象的继承和多态.策略模式的3个角色 a. Strateg ...
最新文章
- java jersey使用总结_jersey使用指南
- JS的prototype和__proto__
- 准备您的虚拟桌面--WinXp模板
- PyCharm中控制台输出日志分层级分颜色显示
- bpnn matlab工具箱,bpnn——matlab工具箱-归一化函数 premnmx、tramnmx、postmnmx、mapminmax...
- 短期主义和长期主义的思考
- 处理JS异常的一个想法
- TensorFlow:实战Google深度学习框架(五)图像识别与卷积神经网络
- linux高亮查找关键字
- 信息安全工程师考试大纲
- BZOJ3884 上帝与集合的正确用法 【欧拉定理】
- 基于FTP4J组件的FTP操作客户端
- paip.php调试imcompatible debug sever version..with zend debugger
- 张宇1000题高等数学 第十、十一、十二章 一元函数积分学的应用——几何应用、积分等式与积分不等式、物理应用
- 用计算机专业怼人,专业示范,教你如何用所学专业知识“怼人”
- rk3568和rk3399性能对比 rk3568和rk3399区别
- 【Linux】解决笔记本合盖子休眠的问题
- bzoj3811 玛里苟斯
- 【转】Lwip 断连,连接几次后不通及偶尔不通的问题.
- oracle闪回区满了,一次快速闪回区满导致数据库不能启动的解决过程