博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式之策略模式
阅读量:6870 次
发布时间:2019-06-26

本文共 1235 字,大约阅读时间需要 4 分钟。

描述:使用策略模式,在改变需求和扩展需求的时候,不需要改动以前的代码,只需要新增功能即可

使用场景:用不同的方式去达到相同的效果,这些方式就是策略

缺点:如果方式过多的话,会导致策略类过于冗余

//出行方式的共同接口

public interface TravelStrategy {

    //出行方式
    void travel();
}

//飞机出行方式

public class AirplaneStrategy implements TravelStrategy{

    @Override
    public void travel() {
        System.out.println("搭乘飞机出行");
    }
}

 

//火车出行方式

public class TrainStrategy implements TravelStrategy {

    @Override
    public void travel() {
        System.out.println("坐火车出行");
    }
}

 

//自行车出行方式

public class BicycleStrategy implements TravelStrategy {

    @Override
    public void travel() {
        System.out.println("骑自行车出行");
    }
}

 

//扩展轮船出行方式

public class ShipStrategy implements TravelStrategy {

    @Override
    public void travel() {
        System.out.println("坐轮船出行");
    }
}

 

//使用出行方式的人

public class Person {

    private TravelStrategy travelStrategy;
    
    public Person(TravelStrategy travelStrategy){
        this.travelStrategy = travelStrategy;
    }
    
    public void travel(){
        this.travelStrategy.travel();
    }
}

 

//主方法

public class Main {

    public static void main(String[] args){
        TravelStrategy t1 = new AirplaneStrategy();
        TravelStrategy t2 = new BicycleStrategy();
        TravelStrategy t3 = new TrainStrategy();
        TravelStrategy t4 = new ShipStrategy();
        Person p = new Person(t4);
        p.travel();
    }
}

转载于:https://www.cnblogs.com/rrb520/p/5600818.html

你可能感兴趣的文章
并发不是并行,它更好!
查看>>
nltk 自己训练模型例子
查看>>
间谍卫星的基础?YOLT——利用卷积神经网络对卫星影像进行多尺度目标检测(Part I)...
查看>>
jstl_开发第一个标签
查看>>
程序员哇,你想在下个情人节或者520脱单么?这个秘籍不能错过
查看>>
去不去O,谁说了算?
查看>>
PHP防SQL注入和XSS攻击
查看>>
在SHAREPOINT共享文档库中启用版本控制功能。
查看>>
Http 代理工具 实战 支持网页与QQ代理
查看>>
又见尾递归
查看>>
安装PyGraphics
查看>>
【COCOS2DX-LUA 脚本开发之四】使用TOLUA++编译PKG,从而创建自定义类让LUA脚本使用...
查看>>
开源大数据周刊-第16期
查看>>
遥感图像分类现状及存在的问题
查看>>
Commons Logging存在的ClassLoader问题详解
查看>>
双向链表的操作
查看>>
Flume-ng 高级功能配置
查看>>
我的友情链接
查看>>
CRM技术发展历程
查看>>
编译安装LAMP(php-fpm)步骤详解
查看>>