美文网首页
常用设计模式 策略模式

常用设计模式 策略模式

作者: 风吟空城 | 来源:发表于2019-03-01 16:04 被阅读0次

策略模式

策略模式专注于对象行为。

UML 示例

策略模式.png

组成

  1. 抽象策略角色
  2. 具体策略角色
  3. 环境角色

下面,结合UML示例图,并以乘坐交通工具去大理为例,解释下策略模式的组成部分。

抽象策略角色

策略类,通常由一个接口或者抽象类实现。通常,策略类中会定义一些动作/行为,但是并不关注这些动作/行为怎么实现。

按照上面的例子,TrafficTool就是策略类,该类种只定义了goDali方法。但是并没有实现该方法。

/**
* 交通工具
*/
public abstract class TrafficTool{
    public void goDali();
}

具体策略角色

具体策略类,是策略类的具体实现,通常会继承或者实现策略类。

按照上面的例子,高铁、飞机、汽车3个子类就是我们所说的具体策略角色,它们都实现了策略类中所定义的行为/动作,即它们都实现了去大理的过程。示例代码如下:

/**
 * 飞机
 */
public class Plane extends TrafficTool{
    public void goDali(){
        //购买机票
        buyPlaneTicket();
        ...
    }
}

/**
 * 高铁
 */
public class HighSpeedRail extends TrafficTool{
    public void goDali(){
        //购买火车票
        buyRailTicket();
        ...
    }
}

/**
 * 汽车-自驾
 */
public class car extends TrafficTool{
    public void goDali(){
        //检查汽油是否足够
        checkOil();
        ...
    }
}

环境角色

环境角色中持有一个策略类的引用,给需要的调用者调用。
按照上面的的例子,环境类中就是Person类,Person类有一个私有属性trafficTooltrafficTool即是我们所说的策略类(TrafficTool类)的引用。环境角色代码如下:

public class Person{

    private TrafficTool trafficTool;

    Person(TrafficTool trafficTool){
        this.trafficTool = trafficTool;
    }
    ... 
}

环境角色调用者

作为环境角色调用者,我们需要指明乘坐哪种交通工具去大理,而非由策略类或者环境类决定。示例代码如下:

//乘坐高铁去大理
Person person = new Person(new HighSpeedRail());
person.getTrafficTool().goDali();

相关文章

  • Java 常用设计模式简例

    简述Java常用设计模式 简述Java常用设计模式及设计原则 strate---------策略模式针对接口编程,...

  • 设计模式

    软件开发中常用设计模式和设计原则有哪些? ##设计模式: * 1、简单工厂模式(Factory) * 2、策略模式...

  • Java设计模式——策略模式

    Java设计模式之策略模式 这期分享的模式是策略模式是程序设计中最常用的了,因为开发工作中总是会使用到策略模式。 ...

  • Strategy(策略) - java 源码中的策略模式

    标签(空格分隔): 设计模式 前言 Strategy(策略)设计模式是设计架构时候常用到的设计模式之一。我们开发中...

  • 一文细读策略模式、策略模式与Spring的碰撞

    前言 策略模式是GoF23种设计模式中比较简单的了,也是常用的设计模式之一,今天我们就来看看策略模式。 实际案例 ...

  • 《iOS开发》--------常用的设计模式

    关于iOS开发中的设计模式,当下有集中最常用的设计模式:代理模式、观察者模式、MVC模式、单例模式、策略模式、工厂...

  • iOS开发中的几种设计模式

    目前常用的几种设计模式:代理模式、观察者模式、MVC模式、单例模式、策略模式、工厂模式、MVVM (一)代理 场景...

  • iOS开发中的几种设计模式

    目前常用的几种设计模式:代理模式、观察者模式、MVC模式、单例模式、策略模式、工厂模式、MVVM (一)代理 场景...

  • 2020-09-29

    目前常用的几种设计模式:代理模式、观察者模式、MVC模式、单例模式、策略模式、工厂模式、MVVM (一)代理 场景...

  • (IOS)设计模式

    目前常用的几种设计模式:代理模式、观察者模式、MVC模式、单例模式、策略模式、工厂模式、MVVM (一)代理 场景...

网友评论

      本文标题:常用设计模式 策略模式

      本文链接:https://www.haomeiwen.com/subject/jpcluqtx.html