zoukankan      html  css  js  c++  java
  • 设计模式课程 设计模式精讲 19-1 策略模式讲解


    1    课程讲解

    1.1  类型:

    1.2  定义:

    1.3  适用场景:

    1.4  优点:

    1.5  缺点:

    1.6  其他特性:

    1.7  与其他设计模式关系:


    1    课程讲解
    1.1  类型:

    行为型

    1.2  定义:

    定义:定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化不会影响到使用算法的用户。
    if...else..…

    扩展:

    使用算法的用户就是应用层,我们把不同的算法封装到不同的类中,让她们之间可以相互替换。

    如田忌赛马,满减等

    大量的if else可以消除掉,

    1.3  适用场景:

    系统有很多类,而他们的区别仅仅在于他们的行为不同

    一个系统需要动态地在几种算法中选择一种

    扩展:把对象的不同行为放到不同的类中,她有很多行为类,每一种类对应每一种行为。

    如:两个数 加法策略,减法策略,乘法策略,除法策略等等

    1.4  优点:

    开闭原则
    避免使用多重条件转移语句(if else switch)
    提高算法的保密性和安全性

    1.5  缺点:

    客户端必须知道所有的策略类,并自行决定使用哪一个策略类。
    产生很多策略类

    1.6  其他特性

    多态和策略模式的区别

    多态是面向对象的特性,这是两个不同层面的概念。在java里面,你看到的策略模式的就是利用了面向对象的多态特性实现的而已

     

    1.7  与其他设计模式关系:

    ◆策略模式和工厂模式

    后者是创建型的,前者是行为型的。

    后者接收指令,创建出符合要求的对象,前者接收已经创建好的对象,从而实现不同的行为。


    ◆策略模式和状态模式

    前者客户端需要知道我们使用的哪个策略,后者客户端不需要知道具体的状态,且状态会自动转换。

  • 相关阅读:
    matlab练习程序(单源最短路径Dijkstra)
    Android开发必须知道SERVICE的10件事
    Android 多种方式正确的加载图像,有效避免oom
    在Android中解决内存溢出 – OutOfMemoryError
    发布Android开源库,看这个文章就够了!
    发掘StateListAnimator的全部潜能
    Android开发中多进程共享数据
    Android使用FFMpeg实现推送视频直播流到服务器
    Android学Jni/Ndk 开发记录(一)
    一张图解释RxJava中的线程控制
  • 原文地址:https://www.cnblogs.com/1446358788-qq/p/11602525.html
Copyright © 2011-2022 走看看