策略模式
来源:互联网 发布:儿童冬季内衣淘宝网 编辑:程序博客网 时间:2024/06/05 14:09
![](http://img.blog.csdn.net/20161224005123284?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvWDc5MzA5NTk4OQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
定义一个接口
public interface MemberStrategy { /** * 计算图书的价格 * @param booksPrice 图书的原价 * @return 计算出打折后的价格 */ public double calcPrice(double booksPrice);}
这个接口有三个实现类
public class PrimaryMemberStrategy implements MemberStrategy { @Override public double calcPrice(double booksPrice) { System.out.println("对于初级会员的没有折扣"); return booksPrice; }}public class IntermediateMemberStrategy implements MemberStrategy { @Override public double calcPrice(double booksPrice) { System.out.println("对于中级会员的折扣为10%"); return booksPrice * 0.9; }}public class AdvancedMemberStrategy implements MemberStrategy { @Override public double calcPrice(double booksPrice) { System.out.println("对于高级会员的折扣为20%"); return booksPrice * 0.8; }}上面就是有三个策略的接口,定义一个具体使用这个策略的类,把具体的策略给它,它就能调用对应的策略的方法了public class Price { //持有一个具体的策略对象 private MemberStrategy strategy; /** * 构造函数,传入一个具体的策略对象 * @param strategy 具体的策略对象 */ public Price(MemberStrategy strategy){ this.strategy = strategy; } /** * 计算图书的价格 * @param booksPrice 图书的原价 * @return 计算出打折后的价格 */ public double quote(double booksPrice){ return this.strategy.calcPrice(booksPrice); }}使用实例
public class Client { public static void main(String[] args) { //选择并创建需要使用的策略对象 MemberStrategy strategy = new AdvancedMemberStrategy(); //创建环境 Price price = new Price(strategy); //计算价格 double quote = price.quote(300); System.out.println("图书的最终价格为:" + quote); }}
0 0
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- android ---notification详解
- usaco3.1.5 Stamps
- Java多线程学习笔记(1)
- Spring学习05--BeanFactory接口和BeanDefinition接口
- z77 intel750装win7简略攻略
- 策略模式
- muduo库chat server的shared_ptr和TLS实现分析
- Python写的CSDN信息推送小助手
- 快速索引
- 放到合适的话
- github tutorial--remote operations
- java生成验证码并进行验证
- git常用命令整理
- 【Codeforces 629 C Famil Door and Brackets 】+ dp