Java教程

【九月打卡】第20天+状态模式

本文主要是介绍【九月打卡】第20天+状态模式,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

课程名称:Java设计模式精讲 Debug方式+内存分析

课程章节:第27章 状态模式讲解+Coding+源码解析

主讲老师:Geely

课程内容:

图片描述

问题1)什么是内部状态改变时改变它的行为?

状态模式策略模式很相似,也是将类的"状态"封装了起来,在执行动作时进行自动的转换,从而实现,类在不同状态下的同一动作显示出不同结果

问题2)策略模式和状态模式区别?

图片描述
状态模式的类图与策略模式一模一样,区别在于它们的意图。策略模式会控制对象使用什么策略,而状态模式会自动改变状态。
1,状态模式,分为状态和行为,每个状态的行为都是固定的,根据不同的状态,选择状态下的某个行为(其实对于策略模式,这里的每个行为都是一种策略,不需要切换状态,而选择其中的一种状态行为),而策略模式是根据状态选择具体的某个行为。

区别:
状态模式将各个状态所对应的操作分离开来,即对于不同的状态,由不同的子类实现具体操作,不同状态的切换由子类实现,当发现传入参数不是自己这个状态所对应的参数,则自己给Context类切换状态;而策略模式是直接依赖注入到Context类的参数进行选择策略,不存在切换状态的操作。
联系:
状态模式和策略模式都是为具有多种可能情形设计的模式,把不同的处理情形抽象为一个相同的接口,符合对扩展开放,对修改封闭的原则。
还有就是,策略模式更具有一般性一些,在实践中,可以用策略模式来封装几乎任何类型的规则,只要在分析过程中听到需要在不同实践应用不同的业务规则,就可以考虑使用策略模式处理,在这点上策略模式是包含状态模式的功能的,策略模式是一个重要的设计模式。

图片描述

问题3)策略模式和状态的相同点?

策略模式和状态模式做得是同一件事:去耦合。怎么去耦合?就是把干什么(语境类)和怎么干(策略接口)分开,互不依赖

这篇关于【九月打卡】第20天+状态模式的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!