• 分享:模版方法,策略模式和状态模式之间的区别


    类图区别:
    模版方法(Template Method):      策略模式(Strategy):      状态模式(State):     
    意图,动机和适用性区别:
    模版方法(Template Method):   意图:   定义一个操作中的算法骨架, 而将一些步骤延迟到子类中.            TempeleteMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤.   动机:   多种输出模板.   适用性:            

    •           一次性实现一个算法的不变的部分, 并将可变的行为留给子类来实现.
    •           公共行为在父类, 不同之处分离为新的操作.
    •           控制子类扩展. 
    •           模板方法只在特定点调用“hook”操作, 这样就只允许在这些点进行扩展.
    策略模式(Strategy):   意图:   定义一系列算法, 把它们一个个封闭起来, 并且使它们可相互替换. 本模式使得算法可独立于使用它的客户而变化.   动机:   将算法硬编进使用他们的类中是不合适的.   适用性:          
    •           许多相关的类仅仅是行为不同.
    •           需要使用一个算法的不同变体.
    •           一个类定义了多种行为, 并且这些行为在操作用以多个条件语句的形式出现.
       状态模式(State):   意图:   允许一个对象在其内部状态改变时改变它的行为. 这个对象看起来似乎修改了它的类.   动机:   
    •           状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况. 
    •           把状态的判断逻辑转移到表示不同状态的一系列类当中, 可以把复杂的判断逻辑简化. 
    •           当一个对象的行为取决于它的状态, 并且它必须在运行时刻根据状态改变它的行为时, 就可以考虑使用状态模式了.
    适用性:          
    •           一个对象的行为取决于它的状态, 并且它必须在运行时刻根据状态改变它的行为.
    •           一个操作中含有庞大的多分支的条件语句, 且这些分支依赖于该对象的状态.
  • 相关阅读:
    Java编辑PDF写入文字 插入图片
    Java图片压缩
    Java base64 图片编码转换
    JAVA操作字符串
    JAVA获取文件夹下所有的文件
    IntelliJ IDEA 注释模板设置
    IntelliJ IDEA 添加junit插件
    python操作mysql数据库系列-安装MySql
    python操作mysql数据库系列-安装MySQLdb
    软件测试工程师为什么要不断提高自身技能?
  • 原文地址:https://www.cnblogs.com/tanbin1766/p/3107196.html
Copyright © 2020-2023  润新知