ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Strategy_策略模式

2022-07-22 21:35:25  阅读:166  来源: 互联网

标签:run 策略 Pattern void 模式 Strategy 算法 public


在策略模式中为一个功能定义了一组算法,将每一个算法封装起来,并让它们可以相互替换,让用户来决定使用哪个算法。
生活中例如洗衣机,它的功能是洗衣服,但是有多个算法:速洗模式,标准模式,强力模式,让用户来决定使用哪种模式来洗衣服。

首先定义一个Pattern接口,所有模式的类都将实现这个接口,并各自重写run()方法的具体实现算法

interface Pattern {
    void run();
}

class Fast implements Pattern{
    public void run() { System.out.println("速洗模式..."); }
}

class Commonly implements Pattern{
    public void run() { System.out.println("一般模式..."); }
}

class Strength implements Pattern{
    public void run() { System.out.println("强力模式..."); }
}

我们在定义一个洗衣机类,需要传递一个实现模式接口的类作为参数,然后去调用里面的run()方法。
随着我们传递的模式类不同,它调用的run()方法中的实现算法也不一样。

public class WashingMachine {

    public void start(Pattern pattern){
        pattern.run();
    }

    public static void main(String[] args) {
        new WashingMachine().start(new Fast());
    }
}

这不就是多态吗?
策略模式是一种抽象的编程思想,并不局限于某一特定语言,很多没有多态特性的语言也可以实现策略模式。而多态是Java语言的一种机制,我们可以利用Java的多态机制来实现策略模式。

为什么要使用策略模式?
使用传统的if语句,switch语句那如果洗衣机模式变多以后,就会有很多else..if语句和case语句,如果要增加其他模式,if语句或switch语句也要修改很不方便,可读性低且不易维护。
使用策略模式在添加新模式时,只需要添加一个新的实现pattern接口的类,你传递什么类型的对象,就执行对应的算法,不用再判断这那的。

标签:run,策略,Pattern,void,模式,Strategy,算法,public
来源: https://www.cnblogs.com/linzhikai/p/16507976.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有