zoukankan      html  css  js  c++  java
  • 策略模式

    策略模式(Pattern Strategy):封装一系列算法,根据使用的场景自动使用需要的算法。那怎么来实现呢,其实最简单的一点,如果我们抽象出一个父类,然后将具体的算法封装在具体的子类中。在调用方法中,传入需要的子类对象,那么就能自动的调用这个子类对象的具体算法了。

    代码如下(此处为java代码,其他语言相似):

    public class t

    {

    public static void main(String args[])

    {

    test(new person());

    test(new dog());

    }

    public static void test(animal a)

    {

    a.show();

    }

    }

    class animal

    {

    public void show()

    {

    System.out.println("animal");

    }

    }

    class person extends animal

    {

    public void show()

    {

    System.out.println("person");

    }

    }

    class dog extends animal

    {

    public void show()

    {

    System.out.println("dog");

    }

    }

    效果如图

    image

    这里我们实现了根据传入的类型不同,使用不同的策略,这就是为什么叫做策略模式的原因。

    那么什么时候需要使用策略模式呢

    表现在多个类拥有相同的特性,仅仅是具体实现算法不同,同时用户不需要了解算法细节,以及算法可能会频繁发生改动时。

    优点:

    抽象了公共的父类,提高了代码重用性。

    将使用细节与算法分离,提高了整体代码的可维护性。

    避免了使用不同对象算法时的多重判断,提高了可维护性。

    缺点:

    用户需要知道每个算法的功能,这样才能根据需要选择。

    当算法过多时,可能需要多个策略类,代码过于冗余。

    联系我:renhanlinbsl@163.com

    2016-7-28

    23:29

  • 相关阅读:
    完美解决HTML5无法上传大文件方法
    完美解决jquery无法上传大文件方法
    Word图片上传控件+整合富文本
    ckeditor粘贴word文档图片的讨论
    python之理解super及MRO列表 ( 示例版 )
    JavaXXX成长直通车_汇总
    P75 验证码识别原理分析
    P74 复习
    P73 卷积神经网络识别手写数字
    P71 激活层与池化层
  • 原文地址:https://www.cnblogs.com/ives/p/PatternStrategy.html
Copyright © 2011-2022 走看看