策略模式
1.定义
定义一系列的算法,把它们一个个封装起来,并且使特们可相互替换。本模式使得算法可独立与使用它的客户而变化。
2.示例代码
展示了多种工资支付方式的策略。
/*支付工资的策略接口,公司有多种支付工资的算法*/ public interface PaymentStrategy{ //支付工资的算法,传入算法所需的数据,上下文 public void pay(PaymentContext ctx); } /*人民币现金支付策略*/ public class RMBCash implements PaymentStrategy{ public void pay(PaymentContext ctx){ System.out.println("现在给" + ctx.getUserName() + "人民币现金支付" + ctx.getMoney() + "元"); } } /*美元现金支付策略*/ public class DollarCash implements PaymentStrategy{ public void pay(PaymentContext ctx){ System.out.println("现在给" + ctx.getUserName() + "美元现金支付" + ctx.getMoney() + "元"); } }
/*支付工资的上下文,每个人的工资不同,支付方式也不同*/ public class PaymentContext{ private String userName = null; private double money = 0.0; //支付工资的策略接口 public PaymentStrategy strategy = null; //构造方法传入被支付工资的人员,应支付的金额和具体的支付策略 public PaymentContext(String userName,double money,PaymentStrategy strategy){ this.userName = userName; this.money = money; this.strategy = strategy; } public String getUserName(){ return userName; } public double getMoney(){ return money; } //支付工资 public void payNow(){ //使用客户希望的支付策略来支付 this.strategy.pay(this); } }
/*客户端支付工资*/ public class Client{ //创建相应的支付策略 PaymentStrategy strategyRMB = new RMBCash(); PaymentStrategy strategyDollar = new DollarCash(); //给小李支付工资 PayContext ctx1 = new PayContext("小李",5000,strategyRMB); ctx1.payNow(); //给petter支付工资 PayContext ctx2 = new PayContext("petter",3000,strategyDollar); ctx2.payNow(); }
3.实际应用
策略模式的一系列策略算法是平等的,是可以通过if-else结构来组织的,这些算法的地位是平等的,可以相互替换的。如果策略过多会导致相应的对象过多。
策略模式的本质:分离算法,选择实现
相关推荐
设计模式--策略模式java例子
PPT内容包括:内附代码,实例,方便理解。 继承、封装、多态、UML 设计模式02 设计模式03-创建型模式 ...设计模式16-策略模式、模板方法、访问者 此PPT实例便于理解,对于深入理解OO思想有很大帮助。
设计模式--策略模式StrategyPattern
设计模式---策略者模式---根据《Head First 设计模式》自己实现
java设计模式--策略模式 HeadFirst书中的 装饰者模式
android应用开发设计模式之-策略模式源代码
JAVA设计模式例程-策略模式,在项目中除工厂模式外就数策略模式用得最多了。源程序,可以研究下。不过没有反射,策略模式结合反射的话,基本上就是一个插件架构。可扩展性超强。
北大青鸟关于设计模式的PPT,讲述的非常清晰,对于初学设计模式的人来说,非常有用。本篇是关于策略模式的PPT
c++设计模式-行为型模式-策略模式;qt工程;c++简单源码; 策略(Strategy)模式的定义:该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于...
设计模式-策略模式-c++版 压缩包中有build好的程序和工程设计到的所有类的源码,还有一个Uml类图
JAVA-设计模式-行为型模式-策略模式
深入浅出设计模式(C#版)--策略模式--示例代码
设计模式-策略模式源代码 .net,策略模式,模式,设计模式 文件包中有UML策略模式详解图
java常用设计模式-策略模式
设计模式体现的是一种思想,而思想则是指导行为的一切,理解和掌握了设计模式,并不是说记住了23种(或更多)设计场景和解决策略(实际上这也是很重要的一笔财富),实际接受的是一种思想的熏陶和洗礼,等这种思想...
讲解策略模式的有关概念、示例等,有助于设计人员进一步了解设计模式的知识。
我的个人系列设计模式博客配套代码之 策略模式
Java设计模式教程——策略模式Java开发Java经验技巧共13页.pdf.zip
设计模式体现的是一种思想,而思想则是指导行为的一切,理解和掌握了设计模式,并不是说记住了23种(或更多)设计场景和解决策略(实际上这也是很重要的一笔财富),实际接受的是一种思想的熏陶和洗礼,等这种思想...