策略模式和状态模式的区别与对比

背景

  • 策略模式和状态模式的UML类图是完全一样的,那他们的区别在哪里呢?

  • 区别主要在于行为上,而不是结构上

策略模式

  • 策略是外界给的,策略怎么变,是调用者考虑的事情,系统只是根据所给的策略做事情

  • 通常用于让外界自主选择需要的策略

状态模式

  • 状态是系统自身的固有的,由系统本身控制,调用者不能直接指定或改变系统的状态转移

  • 通常用于内部状态流转,状态流程是固定的

对比

  • 一个策略是一个计划或方案,可以相互替代;状态整体构成一个流程,各个流程有一定的顺序

  • 采用何种策略由外界(客户端)决定;状态的变迁是由对象的内部条件决定,外界只关心其接口,不必关心其对象的创建和转化

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