《java设计模式》之策略模式
2016-02-01 17:20
531 查看
1. 概念
策略模式,又叫算法簇模式,就是定义了不同的算法族,并且之间可以互相替换,此模式让算法的变化独立于使用算法的客户。策略模式的好处在于你可以动态的改变对象的行为。
2. 应用场景
商品打折,一个电商平台根据会员的等级,购买的商品数量有不同的打折策略。
策略模式,又叫算法簇模式,就是定义了不同的算法族,并且之间可以互相替换,此模式让算法的变化独立于使用算法的客户。策略模式的好处在于你可以动态的改变对象的行为。
2. 应用场景
商品打折,一个电商平台根据会员的等级,购买的商品数量有不同的打折策略。
public interface Discount { float discount(float price); } public class DiscountOp1 implements Discount{ @Override public float discount(float price) { return price * 0.9f; } } public class DiscountOp2 implements Discount{ @Override public float discount(float price) { return price * 0.8f; } } public class DiscountPross { private Discount discount; public float discount(float price){ return discount.discount(price); } public Discount getDiscount() { return discount; } public void setDiscount(Discount discount) { this.discount = discount; } } public class Client { public static void main(String[] args) { Discount discount = new DiscountOp1(); DiscountPross ds = new DiscountPross(); ds.setDiscount(discount); System.out.println(ds.discount(19.6f)); } }
相关文章推荐
- 解决java中中文传值出现乱码问题
- java中null与""的区别
- spring boot mybatis
- java.lang.RuntimeException:Unable to start activity ComponentInfo{com.meizu.beautify/com.my.viewc.Ma
- 深入理解Java遗传算法
- Java-Iterator(迭代器)接口和泛型
- spring自定义异常处理
- JVM 内存基础概念之程序计数器与 Java 虚拟机栈和本地方法栈
- Java 序列化与反序列化
- CountDownLatch、CyclicBarrier和Semaphore区别
- java特种兵读书笔记(5-2)——并发之线程安全
- Element 'beans' cannot have character [children], because the type's content type is element-only
- Java实现排队论的原理
- springmvc(十一)post乱码
- springmvc(十)springmvc和struts2的区别
- JDK的bin目录下那些常见工具使用集锦
- Java动态代理的实现机制
- 【java基础】Minor GC、Major GC和Full GC之间的区别
- Struts2--标签
- JAVA使用commos-fileupload实现文件上传与下载实例解析