car 的速度不同的状态(它有不同的档速,),你想car跑出不同的速度,你可能要用到if else 或者swith 去判断它的档速,
选择怎么跑,使用state模式用来把这些状态抽出来成一组状态的类.
java 代码
- public class Car {
- private CarState speed = new FirstState();
-
- public void change(){
- speed = new SecondState();
- }
- public void speed(){
- speed.speed();
- }
- }
-
- public class FirstState extends CarState{
-
- @Override
- public void speed() {
-
- System.out.println("第一档速度");
- }
-
- }
- public class SecondState extends CarState{
-
- @Override
- public void speed() {
-
- System.out.println("第二档的速度");
- }
-
- }
- public class RunPatternState {
- public static void main(String[] args) {
- Car car = new Car();
- car.speed();
- System.out.println("换档:============");
- car.change();
- car.speed();
- }
-
- }
上面只有两个状态,真实的应该是有很多状态.这里只是举例怎么把不同状态抽出来成一个单独的类.
你完全可以把不同多写这么多类的,完全可在Car的speed()直接用if else,有些类的状态是很多,那会有一大堆if else的
,变得不容易维护.下面把上面的类改造,让它不陷于只能两个状态的
java 代码
- public class Car {
- private CarState speed = new FirstState();
-
- public void change(CarState state){
- speed= state;
- }
- public void speed(){
- speed.speed();
- }
- }
- 增加一个新状状
- public class ThirdState extends CarState{
-
- @Override
- public void speed() {
- System.out.println("第三档速度");
- }
-
- }
- public class RunPatternState {
- public static void main(String[] args) {
- Car car = new Car();
- car.speed();
-
- CarState state = new SecondState();
- car.change(state);
- car.speed();
- CarState state1 = new ThirdState();
- car.change(state1);
- car.speed();
- }
-
- }
刚学习设计模式,不知道我这样理解state模式有没有错.大侠们可以指出
分享到:
相关推荐
State模式是一种行为设计模式,它允许对象在内部状态改变时改变其行为,看起来像是改变了它的类。这种模式常被用于处理具有多种状态的对象,使得对象的状态转换更加清晰,代码更易于理解和维护。 在State模式中,...
对于给定的标签"源码"和"工具",我们可以理解这个压缩包可能包含了State模式的具体实现示例或者是一个帮助开发者理解和应用State模式的工具。文件名"State"可能是指包含State模式相关代码的类或文件。为了深入学习和...
不过,理解State模式的基本概念和应用场景,结合实际项目中的需求,就能有效地运用这种模式来优化代码结构。 总之,State模式是一种强大的设计模式,它有助于管理对象在不同状态下的行为。通过分离状态相关的代码,...
State模式是设计模式中的一种行为模式,它允许对象在内部状态改变时改变其行为,对象看起来好像修改了它的类。这种模式将一个对象的状态抽象出来,封装成独立的类,使得对象可以在不同的状态下表现出不同的行为,而...
2. **实现复杂性**:状态模式的结构相对复杂,如果设计不当可能会导致代码难以理解和维护。 3. **不符合开闭原则**:增加新的状态时往往需要修改现有的代码,这违背了软件设计的开闭原则。 #### 注意事项 在使用...
状态机模式(StateMachine)在Android开发中是一种常用的设计模式,特别是在处理复杂的系统行为时,它可以帮助我们更好地组织代码,使其更具有可读性和可维护性。Android的状态机模式主要涉及两个核心概念:State...
标题和描述均提到了"C#面向对象设计模式"中的State状态模式,这表明文章的核心内容是围绕State模式在C#编程...对于软件开发者而言,理解和掌握State模式及其在实际项目中的应用,将极大地提升软件设计的质量和效率。
状态模式是一种行为设计模式,它允许对象在内部状态改变时改变其行为,对象看起来似乎修改了它的类。...通过理解并正确应用状态模式,开发者能够更优雅地处理对象状态的动态变化,提高代码的可读性和可维护性。
Java设计模式中的State模式是一种行为设计模式,它允许对象在其内部状态改变时改变它的行为。State模式的核心思想是将状态相关的代码封装到独立的对象中,这样可以使得对象在其状态改变时,表现出不同的行为,而无需...
状态模式是一种行为设计模式,它使对象能够在内部状态改变时改变其行为,看起来好像改变了它的类。这种模式常用于处理对象在不同状态下表现各异的情况,避免了复杂的条件语句,提高了代码的可读性和可维护性。 在...
在Java中,正确使用State模式可以有效地管理和控制对象的状态,使代码更清晰、更易于理解和维护。然而,需要注意的是,如果状态较少,行为简单,过度使用State模式可能会导致不必要的复杂性。因此,是否使用State...
状态模式通常包含三个主要角色:Context(上下文)、State(抽象状态)和ConcreteState(具体状态)。 上下文是拥有状态的对象,它定义了与该状态相关的接口,并负责在适当的时候将请求委托给相应的状态对象处理。...
Java设计模式中的State模式是一种行为设计模式,它允许对象在其内部状态改变时改变它的行为。State模式的核心思想是封装可能改变的行为到相应的状态对象中,让对象在其内部状态改变时可以调用不同的行为方法,而不是...
在软件开发中,设计模式是一种在特定情境下解决常见问题的经验总结,是经过验证的、通用的解决方案模板。...这个代码资源包应该包含了实现State模式的示例,可以帮助学习者更好地理解和应用这一设计模式。
首先,我们要理解Stateflow的核心概念:状态和转换。状态代表系统的不同行为模式,而转换则定义了从一个状态到另一个状态的条件。在Stateflow图表中,状态用矩形表示,转换则通过箭头来描绘。每个状态可以包含子状态...
这种设计模式允许开发者以直观的方式描述复杂的状态转换逻辑,从而提高代码的可读性和可维护性。 1.2 单线程与字符串处理 作为单线程状态机,JKI State Machine在处理任务时避免了多线程同步的问题,保证了执行的...
状态模式是一种行为设计模式,它允许对象在内部状态改变时改变其行为,对象看起来似乎修改了它的类。...在Head First的书籍中,这种模式通常通过生动的示例和图解进行解释,帮助读者更好地理解和应用到实际项目中。
这种模式的主要优点在于能够简化对象的状态管理,并使代码更易于理解和维护。 #### 三、状态模式的基本结构 状态模式主要包含以下几个组成部分: 1. **环境角色(Context)** - 环境角色通常是一个拥有状态的对象,...