
概述
定义
作用
1、算法可独立于使用外部而变化
2、客户端方便根据外部条件选择不同的策略来解决不同的问题。
角色
策略模式一般是有3种角色:
1、Context:上下文环境类,持有抽象策略角色的引用(实例),并负责调用相关的算法.
2、Strategy:策略接口或者策略抽象类,定义一系列抽象的算法策略.
3、ConcreteStrategy:具体策略类,实现具体的算法策略.
场景
案例
abstract class Strategy {public abstract void Show();}
//为春节准备的促销活动Aclass StrategyA extends Strategy {@Overridepublic void Show() {System.out.println("为春节准备的促销活动A");}}//为中秋节准备的促销活动Bclass StrategyB extends Strategy {@Overridepublic void Show() {System.out.println("为中秋节准备的促销活动B");}}//为圣诞节准备的促销活动Cclass StrategyC extends Strategy {@Overridepublic void Show() {System.out.println("为圣诞节准备的促销活动C");}}
class Context_SalesMan {//持有抽象策略角色的引用private Strategy strategy;public Context_SalesMan(String festival) {switch (festival) {case "A":strategy = new StrategyA();break;case "B":strategy = new StrategyB();break;case "C":strategy = new StrategyC();break;}}public void SalesManShow() {strategy.Show();}}
public static void main(String[] args) {Context_SalesMan mSalesMan;//春节来了,使用春节促销活动System.out.println("对于春节:");mSalesMan = new Context_SalesMan("A");mSalesMan.SalesManShow();//中秋节来了,使用中秋节促销活动System.out.println("对于中秋节:");mSalesMan = new Context_SalesMan("B");mSalesMan.SalesManShow();//圣诞节来了,使用圣诞节促销活动System.out.println("对于圣诞节:");mSalesMan = new Context_SalesMan("C");mSalesMan.SalesManShow();}
对于春节:为春节准备的促销活动A对于中秋节:为中秋节准备的促销活动B对于圣诞节:为圣诞节准备的促销活动C
优缺点
总结
策略模式的重心:
算法的平等性:
运行时策略的唯一性:
公有的行为:
- THE END -
作者简介
Mr.W
白天搬砖,晚上砌梦想。
相信每个人有故事,程序员更是有许多事故,书写最接地气的程序员故事,为大家找出更好的资料。

文章转载自JAVA的学习之路,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。






