前言
文章内容主要参考了刘伟主编的《设计模式(第2版)》,同时也结合了自己的一些思考和理解,希望能帮到大家。
本篇讲解策略模式。非常常见,也非常简单容易理解。
正文
一、定义
策略模式(Strategy Pattern):定义一系列算法,将每一个算法封装起来,并让它们可以相互替换。策略模式让算法独立于使用它的客户而变化。
这个模式使得我们可以在根据环境或者条件的不同选择不同的策略来完成该任务。将解决途径进行封装有利于我们对解决方式的增加或删除。符合开闭原则。
二、情景假设
软件公司为某电影院开发了一套影院售票系统,在该系统中需要为不同类型的用户提供不同的电影票打折方式,具体打折方案如下:
(1) 学生凭学生证可享受票价8折优惠;
(2) 年龄在10周岁及以下的儿童可享受每张票减免10元的优惠;
(3) 影院VIP用户除享受票价半价优惠外还可进行积分。
三、情景分析
关于上面情景的类图(具体分析在下面)
抽象策略类Discount
public interface Discount{
public double calculate(double price);
}
三个具体策略类
//学生优惠
public class StudentDiscount implements Discount{
public double calculate(double price){
System.out.println("学生票:");
return price*0.8;
}
}
//儿童优惠
public class ChildDiscount implements Discount{
public double calculate(double price){
System.out.println("儿童票:"