`

常用设计模式----状态模式

 
阅读更多
package org.design.patterns;

/**
 * 状态模式: 允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。
 * 
 */
// 状态接口
public interface State {
 void handle();
}

// 状态实现
class Step1State implements State {
 @Override
 public void handle() {
  System.out.println("ConcreteStateA.handle()");
 }
}

class Step2State implements State {
 @Override
 public void handle() {
  System.out.println("ConcreteStateB.handle()");
 }
}

class Step3State implements State {
 @Override
 public void handle() {
  System.out.println("ConcreteStateC.handle()");
 }
}
//状态的变换操作(该类没有很好的体现不同间状态"转换"的特性,有时间完善一下do some thing)
class ContextOption {
 State state;//当前状态

 public void option() {
  int type = 0;
  
  // do some thing ...
  
  stateChange(type);
 }

 private void stateChange(int type) {
  if (type == 1) {
   state = new Step1State();
   state.handle();
  } else if (type == 2) {
   state = new Step2State();
   state.handle();
  } else {
   state = new Step3State();
   state.handle();
  }
 }
}
//==================================================
/*
 * 相关模式比较:
 * 
 * 状态模式:封装基于状态的行为,并将行为委托到当前状态(强调的是不同状态间的"状态转换")
 * 
 * 策略模式:将可以互换的行为封装起来,然后使用委托的方法决定使用哪一个行为(强调的是不同情况选择合适的算法)
 * 
 * 模板方法:由子类决定如何实现算法中的某些步骤
 * 
 */
/*
 * 要点:
 * 
 * --状态模式允许一个对象基于内部状态拥有不同的行为
 * --通过将每个状态封装进一个类,可以把以后需要做的改变都局部化
 * --不过,封装的状态类也会使得类的个数增多
 */
分享到:
评论

相关推荐

    java常用设计模式-状态模式

    今天,我们将讨论两种常用的Java设计模式:状态模式和模板模式。 状态模式(State Pattern) --------------------- 状态模式是一种行为型设计模式,它允许对象在内部状态改变时改变它的行为。状态模式将状态封装...

    java设计模式---诙谐易懂版

    5. 文件中提到的24种设计模式,涵盖了大多数常用的模式。例如,代理模式(Proxy Pattern)、单例模式(Singleton Pattern)、工厂方法模式(Factory Method Pattern)、抽象工厂模式(Abstract Factory Pattern)、...

    JAVA常用设计模式-追美眉技术详解.doc

    ### Java常用设计模式—追美眉技术详解 #### 设计模式概述 设计模式是一种软件设计中的通用解决方案,它描述了一类问题以及解决该问题的方法。通过应用这些模式,开发人员可以编写出更易于理解、扩展和维护的代码...

    常用设计模式demo代码-design.rar

    观察者模式是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于事件驱动编程,如GUI组件之间的通信,或者发布/订阅...

    c#几种常用的设计模式

    以下是对标题和描述中提到的几种常用C#设计模式的详细解释: 1. **单例模式(Singleton)**: - 单例模式确保一个类只有一个实例,并提供全局访问点。在C#中,通常通过私有化构造函数和静态成员来实现。这样可以...

    GOF-设计模式-Design Patterns-英文原版-高清-有目录-有页码

    本书还附带了一些基础类库的介绍,例如列表(List)、迭代器(Iterator)、列表迭代器(ListIterator)、点(Point)、矩形(Rect)等,这些都是在实现设计模式时常用的数据结构。 #### 十一、参考文献与索引 **参考文献与...

    .NET 23种常用设计模式

    ### .NET 23种常用设计模式 #### 概述 设计模式是在软件工程领域内被广泛采用的一种软件设计思路,旨在解决特定类型的问题。在.NET框架中,这些设计模式同样适用并能帮助开发者构建更加灵活、可扩展及易于维护的...

    常用设计模式及Java程序 pdf

    ### 常用设计模式及Java程序设计 #### 设计模式概述 设计模式是一种软件设计领域中的通用解决方案,用于描述解决常见设计问题的最佳实践。它不仅有助于提高代码的复用性和可读性,还能增强软件架构的灵活性和扩展...

    几种常用的设计模式介绍总结

    单例模式是一种常用的创建型设计模式,它保证一个类仅有一个实例,并提供一个全局访问点。单例模式通常用于控制资源的共享访问,例如数据库连接池、日志管理器等。 #### 实现方式 - **构造函数私有化**:防止外部...

    java几种常用的设计模式源码和心得

    本资源包含了2016年6月20日关于Java常用设计模式的源码和作者的心得体会,这对于我们深入理解和应用这些模式具有很大的帮助。 首先,我们要了解设计模式的基本分类。设计模式分为三大类:创建型模式(Creational ...

    游戏设计4-工厂模式-锻造武器

    游戏设计中的工厂模式是一种常用的软件设计模式,它在游戏开发中尤其重要,因为游戏往往涉及到大量对象的创建和管理。在这个“游戏设计4-工厂模式-锻造武器”的主题中,我们将深入探讨工厂模式如何应用于游戏中的...

    【文档+源码】C++面向对象设计模式-文档与代码.zip

    C++面向对象设计模式-文档与代码。 设计模式的分类 从封装变化角度对设计模式的分类 “组件协作”模式 :现代软件专业分工之后的第一个结果是“框架与应用程序的划分”,“组件协作”模式通过晚期绑定,来实现框架...

    几种常用的设计模式

    - 状态模式:允许对象在其内部状态改变时改变它的行为。 - 策略模式:定义一系列算法,并将每个算法封装起来,使它们可以互相替换。 - 模板方法模式:定义一个操作中的算法骨架,而将一些步骤延迟到子类中。 - 访问...

    Java与模式---闫宏

    4. **工厂模式**:作为最常用的设计模式之一,工厂模式提供了一种创建对象的最佳方式,通过抽象出产品创建过程,使得客户端无需关注具体产品的实现细节。 5. **单例模式**:确保一个类只有一个实例,并提供全局访问...

    常用设计模式及java程序

    ### 常用设计模式及Java程序 #### 设计模式概览 设计模式是一种软件工程的概念,用于描述解决常见设计问题的最佳实践。本书《常用设计模式及Java程序》旨在为读者提供一系列经过验证的设计模式及其在Java编程语言...

    JAVA常用设计模式

    【Java常用设计模式详解】 设计模式是软件开发中的一种最佳实践,它提供了在特定场景下解决常见问题的模板。在Java中,设计模式分为三大类:创建型、结构型和行为型模式。以下是对这些模式的详细解释: 1. 创建型...

    java常用设计模式

    Java设计模式是面向对象编程中的一种最佳实践,用于解决常见的设计问题并促进代码的可重用性和可维护性。...在Java开发中,了解并熟练掌握这些常用设计模式是成为一名专业开发人员的关键步骤之一。

    23种设计模式彩图-pdf高清版

    设计模式是软件工程中关于如何解决特定问题的一种公认方法或模板,它们是面向对象设计中常用且被广泛认可的解决方案。设计模式有助于重用设计、提升可维护性,同时减少开发过程中出现错误的可能。 本书中的23种设计...

    【资源免费下载】Java代码积累丨大话设计模式(Java实现版本)、线程协作

    状态模式 导入模式 迭代器模式 命令模式 职责链模式 进来者模式 访问者模式 数据结构 Stack - 使用泛型实现Stack 生成斐波那契数列 使用容器 利用迭代器实现原材料 实用程序 StringUtil类 - 封装常用的String方法 ...

    c++设计模式 描述c++常用设计模式

    Factory模式是一种常用的创建型设计模式,它提供了一个创建对象的接口,但允许子类决定实例化哪个类。该模式的核心在于定义一个创建对象的接口,让子类决定实例化哪一个类。Factory方法使得一个类的实例化延迟到其...

Global site tag (gtag.js) - Google Analytics