`
lindongxiao
  • 浏览: 47636 次
  • 性别: Icon_minigender_1
  • 来自: 泉州
社区版块
存档分类
最新评论

state模式,我的理解

阅读更多
  car 的速度不同的状态(它有不同的档速,),你想car跑出不同的速度,你可能要用到if else 或者swith 去判断它的档速,
    选择怎么跑,使用state模式用来把这些状态抽出来成一组状态的类.
java 代码
 
  1. public class Car {  
  2.      private CarState speed = new FirstState();//这里默认的状态  
  3.        
  4.      public void change(){  
  5.          speed = new SecondState();  
  6.      }  
  7.      public void speed(){  
  8.             speed.speed();  
  9.      }  
  10. }  
  11.   
  12. public class FirstState extends CarState{  
  13.   
  14.     @Override  
  15.     public void speed() {  
  16.   
  17.         System.out.println("第一档速度");  
  18.     }  
  19.   
  20. }  
  21. public class SecondState extends CarState{  
  22.   
  23.     @Override  
  24.     public void speed() {  
  25.          
  26.         System.out.println("第二档的速度");  
  27.     }  
  28.   
  29. }  
  30. public class RunPatternState {  
  31.     public static void main(String[] args) {  
  32.         Car car = new Car();  
  33.         car.speed();  
  34.         System.out.println("换档:============");  
  35.         car.change();  
  36.         car.speed();  
  37.     }  
  38.   
  39. }  
 上面只有两个状态,真实的应该是有很多状态.这里只是举例怎么把不同状态抽出来成一个单独的类.
  你完全可以把不同多写这么多类的,完全可在Car的speed()直接用if else,有些类的状态是很多,那会有一大堆if else的
  ,变得不容易维护.下面把上面的类改造,让它不陷于只能两个状态的
java 代码
 
  1. public class Car {  
  2.      private CarState speed = new FirstState();  
  3.        
  4.      public void change(CarState state){  
  5.                speed= state;        //改了这里  
  6.      }  
  7.      public void speed(){  
  8.             speed.speed();  
  9.      }  
  10. }  
  11. 增加一个新状状  
  12. public class ThirdState extends CarState{  
  13.   
  14.     @Override  
  15.     public void speed() {  
  16.           System.out.println("第三档速度");        
  17.     }  
  18.   
  19. }  
  20. public class RunPatternState {  
  21.     public static void main(String[] args) {  
  22.         Car car = new Car();  
  23.         car.speed();  
  24.          
  25.         CarState state = new SecondState();  
  26.         car.change(state);  
  27.         car.speed();  
  28.         CarState state1 = new ThirdState();   
  29.         car.change(state1);  
  30.         car.speed();  
  31.     }  
  32.   
  33. }  
刚学习设计模式,不知道我这样理解state模式有没有错.大侠们可以指出
分享到:
评论

相关推荐

    state模式

    State模式是一种行为设计模式,它允许对象在内部状态改变时改变其行为,看起来像是改变了它的类。这种模式常被用于处理具有多种状态的对象,使得对象的状态转换更加清晰,代码更易于理解和维护。 在State模式中,...

    [行为模式] state模式

    对于给定的标签"源码"和"工具",我们可以理解这个压缩包可能包含了State模式的具体实现示例或者是一个帮助开发者理解和应用State模式的工具。文件名"State"可能是指包含State模式相关代码的类或文件。为了深入学习和...

    State模式

    不过,理解State模式的基本概念和应用场景,结合实际项目中的需求,就能有效地运用这种模式来优化代码结构。 总之,State模式是一种强大的设计模式,它有助于管理对象在不同状态下的行为。通过分离状态相关的代码,...

    C++ State模式

    State模式是设计模式中的一种行为模式,它允许对象在内部状态改变时改变其行为,对象看起来好像修改了它的类。这种模式将一个对象的状态抽象出来,封装成独立的类,使得对象可以在不同的状态下表现出不同的行为,而...

    状态模式 State Pattern

    2. **实现复杂性**:状态模式的结构相对复杂,如果设计不当可能会导致代码难以理解和维护。 3. **不符合开闭原则**:增加新的状态时往往需要修改现有的代码,这违背了软件设计的开闭原则。 #### 注意事项 在使用...

    Android的状态机模式StateMachine与State

    状态机模式(StateMachine)在Android开发中是一种常用的设计模式,特别是在处理复杂的系统行为时,它可以帮助我们更好地组织代码,使其更具有可读性和可维护性。Android的状态机模式主要涉及两个核心概念:State...

    C#面向对象设计模式纵横谈(22):(行为型模式) State 状态模式

    标题和描述均提到了"C#面向对象设计模式"中的State状态模式,这表明文章的核心内容是围绕State模式在C#编程...对于软件开发者而言,理解和掌握State模式及其在实际项目中的应用,将极大地提升软件设计的质量和效率。

    设计模式C++学习之状态模式(State)

    状态模式是一种行为设计模式,它允许对象在内部状态改变时改变其行为,对象看起来似乎修改了它的类。...通过理解并正确应用状态模式,开发者能够更优雅地处理对象状态的动态变化,提高代码的可读性和可维护性。

    java设计模式之State.docx

    Java设计模式中的State模式是一种行为设计模式,它允许对象在其内部状态改变时改变它的行为。State模式的核心思想是将状态相关的代码封装到独立的对象中,这样可以使得对象在其状态改变时,表现出不同的行为,而无需...

    设计模式之状态模式(State)

    状态模式是一种行为设计模式,它使对象能够在内部状态改变时改变其行为,看起来好像改变了它的类。这种模式常用于处理对象在不同状态下表现各异的情况,避免了复杂的条件语句,提高了代码的可读性和可维护性。 在...

    java设计模式之State.pdf

    在Java中,正确使用State模式可以有效地管理和控制对象的状态,使代码更清晰、更易于理解和维护。然而,需要注意的是,如果状态较少,行为简单,过度使用State模式可能会导致不必要的复杂性。因此,是否使用State...

    设计模式之状态模式State

    状态模式通常包含三个主要角色:Context(上下文)、State(抽象状态)和ConcreteState(具体状态)。 上下文是拥有状态的对象,它定义了与该状态相关的接口,并负责在适当的时候将请求委托给相应的状态对象处理。...

    试谈java设计模式之State.doc

    Java设计模式中的State模式是一种行为设计模式,它允许对象在其内部状态改变时改变它的行为。State模式的核心思想是封装可能改变的行为到相应的状态对象中,让对象在其内部状态改变时可以调用不同的行为方法,而不是...

    C++设计模式代码资源18_State.zip

    在软件开发中,设计模式是一种在特定情境下解决常见问题的经验总结,是经过验证的、通用的解决方案模板。...这个代码资源包应该包含了实现State模式的示例,可以帮助学习者更好地理解和应用这一设计模式。

    Stateflow教程,stateflow教程 pdf,matlab

    首先,我们要理解Stateflow的核心概念:状态和转换。状态代表系统的不同行为模式,而转换则定义了从一个状态到另一个状态的条件。在Stateflow图表中,状态用矩形表示,转换则通过箭头来描绘。每个状态可以包含子状态...

    Head First 设计模式 (十) 状态模式(State pattern) C++实现

    状态模式是一种行为设计模式,它允许对象在内部状态改变时改变其行为,对象看起来似乎修改了它的类。...在Head First的书籍中,这种模式通常通过生动的示例和图解进行解释,帮助读者更好地理解和应用到实际项目中。

    _jki_lib_state_machine.zip_JKI_JKI state machine_JKI state架构_ope

    这种设计模式允许开发者以直观的方式描述复杂的状态转换逻辑,从而提高代码的可读性和可维护性。 1.2 单线程与字符串处理 作为单线程状态机,JKI State Machine在处理任务时避免了多线程同步的问题,保证了执行的...

    C++设计模式课件18_State_状态模式.pdf

    这种模式的主要优点在于能够简化对象的状态管理,并使代码更易于理解和维护。 #### 三、状态模式的基本结构 状态模式主要包含以下几个组成部分: 1. **环境角色(Context)** - 环境角色通常是一个拥有状态的对象,...

Global site tag (gtag.js) - Google Analytics