设计模式——策略模式

什么是策略模式?策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。举个例子?

常规代码实现方式
// 第一种 switch("出行方式") { case "高铁": { "坐高铁咯!"; break; } case "飞机": { "坐飞机咯!"; break; } case "火车": { "坐火车咯!"; break; } case "汽车": { "坐汽车咯!"; break; } default: { "巴拉巴拉巴拉"; break; } } // 第二种 if("出行方式" == "高铁") { "坐高铁咯!"; } if("出行方式" == "飞机") { "坐飞机咯!"; } if("出行方式" == "火车") { "坐火车咯!"; } if("出行方式" == "汽车") { "坐汽车咯!"; }
运用策略模式实现
1)写个接口
interface TravelOutside { void modeOfTravel(); }
2)接口实现
// 高铁 public class HighSpeedRailway implements TravelOutside { @Override public void modeOfTravel() { System.err.println("高铁"); } } // 飞机 public class Aircraft implements TravelOutside { @Override public void modeOfTravel() { System.err.println("飞机"); } } // 火车 public class Train implements TravelOutside { @Override public void modeOfTravel() { System.err.println("火车"); } } // 汽车 public class Automobile implements TravelOutside { @Override public void modeOfTravel() { System.err.println("汽车"); } }
3)抽象类实现
public class Travel { // 出行方式接口 TravelOutside travelOutside; // 设置出行方式 public void setTravelOutside(TravelOutside travelOutside) { this.travelOutside = travelOutside; } // 选择出行方式 public void travelStyle() { travelOutside.modeOfTravel(); } }
4)使用
public static void main(String[] args) { Travel travel = new Travel(); travel.setTravelOutside(new Aircraft()); travel.travelStyle(); }
控制台输出结果

聊聊
策略模式设计三个角色:
环境角色(Context):定义环境角色,负责和具体的策略类交互,内部持有一个策略类的引用,给客户端调用;
抽象策略角色(Strategy):定义抽象策略角色,通常情况下使用接口或者抽象类去实现;
具体策略(ConcreteStrategy)角色:定义具体策略角色(在定义飞机、高铁、火车、汽车具体的策略)。

(0)

相关推荐

  • 策略模式

    有道无术,术可求 有术无道,止于术 一.策略模式的定义 先举一个例子来说:在网上购物的时候,有的时候会有一些打折的活动,可能会给你5元的优惠券,也有可能会给一张满减的优惠券,而无论给怎样的优惠券,到了 ...

  • JAVA设计模式之策略模式 - Strategy

    在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改.这种类型的设计模式属于行为型模式. 在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 ...

  • Java设计模式之002--策略模式

    策略模式(Strategy Pattern) :定义了一系列的算法, 将每一种算法封装起来并可以相互替换使用, 策略模式让算法独立于使用它的客户应用而独立变化. OO设计原则: 1.面向接口编程(面向 ...

  • 点外卖,让我想起了 策略模式【原创】

    回复"000"获取大量电子书 本篇文章是设计模式系列的第三篇: 模板模式 单例模式 今天给大家分享的是策略模式,具体内容大纲如下: 生活案例 在这互联网时代,尤其是在城市中,有一帮 ...

  • PHP设计模式—策略模式

    定义: 策略模式(Strategy):它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户. 结构: Strategy(策略类):定义所有支持的算法的公 ...

  • 设计模式-策略模式

    示例 策略模式是我们工作中比较常用的一个设计模式,但是初次理解起来可能会有点困难,因此我们还是先看一个例子,假设现在需要开发一个画图工具,画图工具中有钢笔,笔刷和油漆桶,其中,钢笔可以用于描边,但不能 ...

  • TypeScript实现设计模式——策略模式

    策略模式(Strategy):它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化不会影响到使用算法的客户. --<大话设计模式> 策略模式主要用来解决当有多种相似算 ...

  • PHP设计模式之策略模式

    PHP设计模式之策略模式 策略模式,又称为政策模式,属于行为型的设计模式. Gof类图及解释 GoF定义:定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换.本模式使得算法可独立于使用它的 ...

  • [PHP小课堂]PHP设计模式之策略模式

    [PHP小课堂]PHP设计模式之策略模式 关注公众号:[硬核项目经理]获取最新文章 添加微信/QQ好友:[DarkMatterZyCoder/149844827]免费得PHP.项目管理学习资料

  • 用工厂设计模式+策略什么模式,彻底干掉if else

    老哥哔哔叨 无论是人生还是代码,都面临着很多的选择,代码里面充斥着无数的if / else,人生不也是一样吗?无数的分岔路口,我们无法避免这些选择,但是我们可以更优美的去做选择-设计模式. 谈恋爱的烦 ...

  • 设计模式之策略模式

    策略模式 Strategy Intro 策略模式(Strategy):它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化不会影响到使用算法的 Context. 策略模式是一种定 ...

  • 设计模式(22) 策略模式

    在策略模式中,一个类的行为或算法可以在运行时动态更改. GOF对策略模式的描述为: Define a family of algorithms, encapsulate each one, and m ...

  • 详解JAVA面向对象的设计模式 (二)、策略模式

    策略模式 Strategy 介绍 在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改.这种类型的设计模式属于行为型模式. 在策略模式中,我们创建表示各种策略的对象和 ...