状态模式总结篇
状态模式总结篇,我们将从以下几个方面对状态模式进行总结。
状态模式出现的意图是什么?
通过对象内部状态发生改变进而来改变对象的行为,对象看起来好像是被修改了一样。如,没有糖果的时候(是一个状态),糖果机就不能运行了,有糖果之后(另一个状态),投币就可以出糖果了。
本文出处凯哥Java(kaigejava)讲《23种设计模》系列教程种的《状态模式总结篇》
凯哥公众号:凯哥Java
凯哥个人博客:www.kaigejava.com
主要解决的问题是什么?
对象的行为依赖于对象的状态变化(属性变更),并且根据属性值(状态)的改变而改变相关的行为。如,出不出糖果这个行为受糖果机里面有没有糖果和有没有投币这两个状态影响而改变的。
什么时候或者是什么场景下使用状态模式?
在我们的程序代码中包含和很多与对象状态有关的条件语句(如if……else……或者是switch等)的时候,就可以使用状态模式
如何实现状态模式?
将代码中的各种具体的状态抽象到一个类中。这样就有了状态类抽象对象。
使用状态模式的关键点是什么?
需要和命令模式进行区分。命令模式的接口中,通常情况下只有一个方法,而状态模式的接口中有一个或者多个方法。还有一个不同的地方就是,状态模式的时候其实现类的方法一般是返回一个值或者是改变变量的值的。这是因为,状态模式一般和对象的状态有关。
状态模式的优缺点:
优点:
1:对状态转换规则进行了封装;
2:可以使用枚举类,枚举出所有可能的状态。但是需要在枚举状态之前确定状态的种类;
3:扩展性好。将所有与某个或者某些状态有关的行为放到了一个类对象中,这样方便管理,并且可以方便的新增状态,只需要改变对象状态就可以实现改变对象行为了;
4:代码简洁好维护。状态模式允许状态转换逻辑和状态对象合为一体,而不是一个巨大的条件语句块;
5:可以让多个不同的环境对象共享一个状态的对象,这样减少系统中对象的数量。
缺点:
1:增加对象和系统类的个数;
2:结构与实现比较复杂,如果使用不当,可能会造成程序结构和代码给人感觉很混乱的;
3:对开闭原则支持不好。
使用状态模式需要注意事项:
在行为受到状态约束的时候,使用状态模式,而且需要注意的是:状态最好不要超过5个
相关推荐
本篇文章将对一系列重要的C#面向对象设计模式进行总结,帮助开发者更好地理解和应用这些模式。 1. 工厂模式:工厂模式是一种创建型设计模式,提供了一种创建对象的最佳方式,通过抽象工厂接口,避免了代码与具体类...
本篇将探讨两种重要的行为设计模式:责任链模式(Chain of Responsibility Pattern)和状态模式(State Pattern)。 **责任链模式**是一种使多个对象都有机会处理请求的模式,避免请求发送者与接收者之间的耦合。在...
《Java多线程编程实战指南(设计模式篇)》由黄文海撰写,是一本深入探讨Java多线程编程和设计模式的专业书籍。书中详细介绍了如何在Java环境中利用多线程来实现高效的并发处理,同时结合设计模式,帮助开发者更好地...
设计模式之 Memento(注释状态?) 很简单一个模式,就是在内存中保留原来数据的拷贝. 设计模式之 Interpreter(解释器) 主要用来对语言的分析,应用机会不多. 设计模式之 Visitor(访问者) 访问者在进行访问时,完成...
这篇“设计模式的读书总结笔记”是对设计模式深入理解和应用的结晶,包含对各种模式的实例解析、优缺点分析以及如何在实际项目中应用的指导。 一、设计模式的基本概念 设计模式并不直接提供代码实现,而是描述在...
设计模式是经验丰富的开发者们在长期实践中总结出来的、经过验证的解决方案模板,它们可以被用来处理常见的设计挑战。在软件开发过程中,设计模式有助于提高代码的可读性、可维护性和复用性,从而提升软件质量。通常...
在Java编程中,多线程是一项关键技能,它允许程序同时执行多个任务,极大地提高了程序的...通过阅读"Java多线程编程实战指南 设计模式篇.pdf",你将获得更深入的理论知识和实践技巧,为你的编程事业奠定坚实的基础。
另外,这也不是一篇高级专题技术论文,而是一本关于设计模式的书,它描述了在面向对象软件设计过程中针对特定问题的简洁而优雅的解决方案。设计模式捕获了随时间进化与发展的问题的求解方法,因此它们并不是人们从...
另外,这也不是一篇高级专题技术论文,而是一本关于设计模式的书,它描述了在面向对象软件设计过程中针对特定问题的简洁而优雅的解决方案。设计模式捕获了随时间进化与发展的问题的求解方法,因此它们并不是人们从...
本篇文章将对这23种设计模式进行详细解读。 1. **单例模式**:确保一个类只有一个实例,并提供全局访问点。在Java中,通常通过双重检查锁定(Double-Checked Locking)或静态内部类方式实现。 2. **工厂模式**:...
在Java编程领域,设计模式是解决常见问题的模板化解决方案,是软件开发人员在面对复杂设计挑战时的经验总结。这个名为"Java 设计模式篇.zip"的压缩包聚焦于Java多线程编程中的设计模式应用,是提升Java实战技能和...
本篇文章将详细介绍23种C#设计模式,分为创建型、结构型和行为型三类。 ### 创建型设计模式 #### 1. 单件模式(Singleton Pattern) 单件模式确保一个类只有一个实例,并提供一个全局访问点。这种模式经常用于...
这篇总结将深入探讨Java中的主要设计模式,并通过实际例子来阐述它们的应用。 1. **单例模式**:确保一个类只有一个实例,并提供全局访问点。在Java中,单例模式通常通过双重检查锁定、静态内部类或者枚举方式实现...
本篇主要针对23种经典的设计模式进行深入探讨,并以Java语言为背景,解析它们在实际开发中的应用。 首先,我们有三种主要的设计模式类别:创建型模式、结构型模式和行为型模式。创建型模式如单例模式(Singleton)...
在这个文档中,我们将关注“设计模式十八篇”中的两个模式:享元模式(Flyweight)和桥接模式(Bridge)。 享元模式(Flyweight): 享元模式的主要目的是通过共享对象来减少内存中的对象数量,从而降低内存占用和...
设计模式是软件工程中的一种最佳实践,它们是解决常见编程问题的经验总结,为软件开发提供了可复用的解决方案。在面向对象编程中,设计模式基于一些基本原则,这些原则构成了良好设计的基础。本篇将深入探讨23种设计...
《21种设计模式略见一斑》这篇文章和配套的"行者买刀21种设计模式详解.pdf"文件,是面向IT专业人士,尤其是软件开发者的一份珍贵资源,旨在深入理解并掌握软件设计中的核心概念——设计模式。设计模式是经验丰富的...
在软件开发领域,设计模式是一种被广泛采用的解决常见问题的方法。通过学习设计模式,开发者可以更好地理解如何构建可维护、可扩展且高效的系统。...希望本文所总结的设计模式基础知识能够对您的学习之路有所帮助。
Java设计模式是软件工程中的一种最佳实践,它们是解决常见编程问题的经验总结,可以提高代码的可重用性、可维护性和灵活性。本篇将详细探讨Java中的23种设计模式,分为创建型、结构型和行为型三大类。 1. 创建型...
### 设计模式文档 #### 创建模式 ##### 工厂模式(Factory Pattern) 工厂模式是一种创建型设计模式,它...通过本篇文档的学习,希望能对Java设计模式有一个全面的理解,并能够在实际开发中合理地运用这些设计模式。