zoukankan      html  css  js  c++  java
  • 《大话设计模式》 第二章 策略模式

    面向对象的编程,并不是类越多越好,类的划分是为了封装,但分类的基础是抽象,具有相同属性和功能的对象的抽象集合才是类。

     
    策略模式:定义了算法,分别封装,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。
     
    策略模式是一种定义一系列算法的方法,从概念上看,所有这些算法完成的都是相同的工作,只是实现不同,他可以以相同的方式调用所有的算法,减少了各种算法类与使用算法类之间的耦合。
     
    策略模式中普通算法的策略类为环境定义了一系列可供重用的算法或行为。继承有助于析出出这些算法中的公共功能。
     
    策略模式简化了单元测试,每个算法都有自己的类,可以通过自己的接口单独测试。
     
    当不同的行为堆砌在一个类中时,就很难避免使用条件语句来选择合适的行为。将这些行为封装在一个个独立的策略类中,可以在使用这些行为的类中消除条件语句。
     
    策略模式用来封装算法,同样可以封装几乎任何类型的规则,只要在分析过程中,需要不同时间执行不同的运行方式,就可以考虑使用策略模式。
     
    基本的策略模式中,选择怎么具体实现由客户端对象选择,并转给策略模式的策略对象。
     
    任何需求的变更都需要成本。
     
    阅读心得与反思:
     
    UGUI 可以单独用一个空物体存放不同的脚本,脚本中有不同的方法,比如全部按钮可以调用其中一个脚本的方法,或者负责删除按钮的调用一个脚本中的方法,负责增加的调用一个脚本中的方法。
     
    单独实现算法之前,仅需要知道执行了什么类型的算法。而继承的父策略对象存储了算法的公共因素。客户端只需要传递参数和执行方式进入服务器端的就可以。客户端与服务器端耦合度极小。
  • 相关阅读:
    战略威慑 51nod提高组试题
    赛艇表演 51nod提高组模拟试题
    Emiya家今天的饭 NOIP2019 (CSP?) 类DP好题 luoguP5664
    华容道题解 NOIP2013 思路题!
    (板子) 最小生成树 买礼物 luogu P1194
    (板子)并查集(递归+循环)
    校园网络 luogu P2812 (又是强联通)
    货车运输 noip2013 luogu P1967 (最大生成树+倍增LCA)
    Codeforces Round #684 (Div. 2)
    Codeforces Round #683 (Div. 2, by Meet IT)
  • 原文地址:https://www.cnblogs.com/colve/p/5089843.html
Copyright © 2011-2022 走看看