行为模式-状态模式&策略模式&模板模式

标签(空格分隔): 状态模式 策略模式 模板模式 面向接口


状态模式:当一个对象的内在状态改变时,允许改变其行为,这个对象看起来改变了其类
状态模式是为了消除庞大的条件分支,将特定状态的行为放入一个对象中

状态模式主要是解决当一个控制对象状态转换的条件表达式过于复杂时的情况,将状态的判断逻辑转移到标识不同状态的一系列类中,将调用方的判断逻辑简化。

优点:1、将所有与某个状态有关的行为放到一个类中,并且可以方便地增加新的状态,只需要改变对象状态即可改变对象的行为。 2、允许状态转换逻辑与状态对象合成一体,而不是某一个巨大的条件语句块。

-------------------------------------------------------------------------------------------------------------------------------

策略模式: 定义算法家族,分别包装起来,确保他们之间可以互相替换。
策略模式想要实现的是一个类的行为在其运行时可以改变

策略模式涉及到三个角色
环境角色(客户端):实际算法的调用者
抽象策略角色(接口):一个抽象角色,提供一个算法的入口
具体策略角色(接口的实现类):包装了具体的算法


优点:算法行为可以自由切换,而不对客户端造成影响,扩展性好。


面向接口
策略模式思想即是我们常说的面向接口编程,将算法的定义和实现分开,对于环境角色来说,只需要知道我需要调用的方法名是什么即可,内部具体的实现则与其无关。
-------------------------------------------------------------------------------------------------------------------------------

模板模式:如同模式的名称一样,定义一个操作中使用的算法的骨架,将一些独特的步骤衍生到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

模板方式是通过将不变的行为搬移到超类中,去除子类中的重复代码


优点:1、封装不变部分,扩展可变部分。 2、提取公共代码,便于维护。 3、行为由父类控制,子类实现。

模板方式和策略模式的行为刚好相反:
策略模式是客户端调用的父类(或接口),具体的实现对于客户端而言是屏蔽的
模板模式则由客户端调用子类,客户端需要知道具体的细节

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1 场景问题# 1.1 报价管理## 向客户报价,对于销售部门的人来讲,这是一个非常重大、非常复杂的问题,对不同的...
    七寸知架构阅读 10,540评论 9 62
  • 设计模式汇总 一、基础知识 1. 设计模式概述 定义:设计模式(Design Pattern)是一套被反复使用、多...
    MinoyJet阅读 9,386评论 1 15
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,589评论 19 139
  • 1 场景问题 1.1 报价管理 向客户报价,对于销售部门的人来讲,这是一个非常重大、非常复杂的问题,对不同的客户要...
    4e70992f13e7阅读 8,283评论 2 16
  • 2016/03/19,周六。5:00AM 起床,6:00AM出门,7:00AM上车,12:30PM下车。苏州-武汉...
    山贼阅读 3,165评论 1 1