`

设计模式----状态模式(state pattern)

 
阅读更多
LiftState.java代码如下:
 package com.designPattern.state;

public abstract class LiftState {

	protected Context context;

	
	public abstract void open();
	
	public abstract void close();
	
	public abstract void run();
	
	public abstract void stop();
	
	public Context getContext() {
		return context;
	}

	public void setContext(Context context) {
		this.context = context;
	}

}



ClosingState.java代码如下:
package com.designPattern.state;

public class ClosingState extends LiftState{

	@Override
	public void open() {
		super.context.setLiftState(Context.openningState);
		super.context.getLiftState().open();
	}

	@Override
	public void close() {
		System.out.println("电梯门关闭");
	}

	@Override
	public void run() {
		super.context.setLiftState(Context.runningState);
		super.context.getLiftState().run();
	}

	@Override
	public void stop() {
		super.context.setLiftState(Context.stoppingState);
		super.context.getLiftState().stop();
	}

}



OpenningState.java代码如下:
 package com.designPattern.state;

public class OpenningState extends LiftState{

	@Override
	public void open() {
       System.out.println("电梯门打开了");		
	}

	@Override
	public void close() {
		super.context.setLiftState(Context.closingState);
		super.context.getLiftState().close();	
	}

	@Override
	public void run() {
		
	}

	@Override
	public void stop() {
		
	}

}



RunningState.java代码如下:
 package com.designPattern.state;

public class RunningState extends LiftState{

	@Override
	public void open() {
		
	}

	@Override
	public void close() {
		
	}

	@Override
	public void run() {
		System.out.println("电梯上下跑");
	}

	@Override
	public void stop() {
		super.context.setLiftState(Context.stoppingState);
		super.context.getLiftState().stop();
	}

}



StoppingState.java代码如下:
package com.designPattern.state;

public class StoppingState extends LiftState{

	@Override
	public void open() {
		super.context.setLiftState(Context.openningState);
		super.context.getLiftState().open();
	}

	@Override
	public void close() {
		
	}

	@Override
	public void run() {
		super.context.setLiftState(Context.runningState);
		super.context.getLiftState().run();
	}

	@Override
	public void stop() {
		System.out.println("电梯停止了");
	}

}



Context.java代码如下:
 package com.designPattern.state;

public class Context {
	
	public static final OpenningState openningState = new OpenningState();
	public static final ClosingState closingState = new ClosingState();
	public static final RunningState runningState = new RunningState();
	public static final StoppingState stoppingState = new StoppingState();

	private LiftState liftState;

	public LiftState getLiftState() {
		return liftState;
	}

	public void setLiftState(LiftState liftState) {
		
		this.liftState = liftState;
		
		this.liftState.setContext(this);
	}
	
	public void open(){
		this.liftState.open();
	}
	
	public void close(){
		this.liftState.close();
	}
	
	public void run(){
		this.liftState.run();
	}
	
	public void stop(){
		this.liftState.stop();
	}
	
	
}



Client.java代码如下:
package com.designPattern.state;

public class Client {
	
	public static void main(String[] args) {
		Context context = new Context();
		context.setLiftState(new ClosingState());
		
		context.open();
		context.close();
		context.run();
		context.stop();
	}

}



运行结果如下:
电梯门打开了
电梯门关闭
电梯上下跑
电梯停止了

分享到:
评论

相关推荐

    《设计模式》实战---状态模式(State Pattern)

    在《设计模式》实战---状态模式(State Pattern)这篇文章中,作者可能详细探讨了以下关键点: 1. **模式定义**:状态模式允许对象在内部状态改变时改变其行为,对象看起来好像修改了它的类。这通过将每个状态封装...

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

    Java 架构设计模式 - 状态模式和模板模式 在软件设计中,了解设计模式非常重要,它可以帮助开发者编写更好的代码,使得系统更加灵活、可维护和可扩展。今天,我们将讨论两种常用的Java设计模式:状态模式和模板模式...

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

    代理模式(Proxy Pattern)、单例模式(Singleton Pattern)、工厂方法模式...状态模式(State Pattern)、原型模式(Prototype Pattern)、中介者模式(Mediator Pattern)、解释器模式(Interpreter Pattern)、享元...

    design-pattern-java.pdf

    十一个行为型模式 状态模式-State Pattern 处理对象的多种状态及其相互转换——状态模式(一) 处理对象的多种状态及其相互转换——状态模式(二) 处理对象的多种状态及其相互转换——状态模式(三) 处理对象的...

    状态模式 State Pattern

    ### 状态模式(State Pattern) #### 概念与定义 状态模式是一种行为设计模式,它允许对象在其内部状态改变时改变其行为,使对象看起来像是修改了它的类。该模式通过引入一个代表各种状态的类以及一个行为随着这些...

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

    状态模式是一种行为设计模式,它使你能在运行时改变对象的行为。在状态模式中,一个对象的状态变化会导致其行为的变化,这种变化不是通过改变对象的类来实现的,而是通过改变对象的状态。这个模式的核心是封装可能...

    设计模式-状态模式.pdf

    状态模式(State Pattern)是一种行为设计模式,它允许对象在其内部状态改变时改变其行为,从而使对象看起来像改变了其类。这种模式的主要目的是将对象的状态作为独立的类来管理,从而简化了条件逻辑并提高了代码的...

    设计模式 - Design Pattern

    "Design Pattern"这个压缩包文件很可能包含了一些关于设计模式的实例和文档,特别是提到了"design-pattern\doc\api"目录下的"index.html",这可能是一个交互式的文档或者教程,通过实例帮助开发者更好地理解设计模式...

    JAVA设计模式-chm版

    包括责任链模式(Chain of Responsibility)、命令模式(Command)、解释器模式(Interpreter)、迭代器模式(Iterator)、中介者模式(Mediator)、备忘录模式(Memento)、观察者模式(Observer)、状态模式...

    设计模式整理代码-pattern.zip

    这里我们关注的是一个名为"pattern.zip"的压缩包文件,它包含了23种经典的设计模式,这些模式在实践中被广泛使用,提高了代码的可读性、可维护性和可扩展性。这篇文章将详细探讨这些设计模式及其应用。 首先,23种...

    C++11全套设计模式-23种指针的用法(a full DesignPattern -DesignPattern.zip

    本资料包“DesignPattern - DesignPattern.zip”提供了对C++11中23种设计模式的全面讲解,特别是结合指针使用的部分,以下是对这些知识点的详细阐述: 1. **单例模式(Singleton)**:确保一个类只有一个实例,并...

    状态模式(State Pattern)是一种行为设计模式

    状态模式(State Pattern)是一种行为设计模式,它允许对象在内部状态改变时改变其行为,对象看起来似乎修改了它的类。这种模式将一个对象的行为分解为各个独立的状态,并且每个状态都封装在自己的类中,使得对象在...

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

    ### GOF设计模式详解 #### 一、设计模式概述 **设计模式**(Design Patterns)是软件工程中的一个重要概念,它是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。本章节将从多个角度对设计模式...

    23种设计模式 - 架构设计 - PPT

    ### 23种设计模式详解 #### 一、设计模式概览 设计模式是在软件工程领域内积累的经验和智慧的结晶。它源自于我们在面向对象编程(OOP)中遇到的各种常见问题及其解决方法。设计模式的目标是提高软件的可复用性、可...

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

    状态模式是一种行为设计模式,它允许对象在内部状态改变时改变其行为,对象看起来似乎修改了它的类。这种模式常用于处理对象的状态变化,并且根据不同的状态,对象的行为也相应地变化。在C++中实现状态模式,我们...

    23种设计模式-C++实现.zip

    设计模式是软件工程中经过长期实践验证的有效解决方案模板,它们为常见的编程问题提供了...在压缩包中的"DesignPattern-master"文件夹中,你将找到每个设计模式的详细实现示例,这将是你学习和理解设计模式的宝贵资源。

    JAVA design pattern-java设计模式

    在这个名为"JAVA design pattern-java设计模式"的CHM文件中,我们可能找到了关于如何在Java开发中应用设计模式的详细信息。 设计模式通常分为三大类:创建型、结构型和行为型。创建型模式关注对象的创建,如单例...

    design-pattern-Java设计模式

    行为型模式如策略(Strategy)、模板方法(Template Method)、观察者(Observer)、命令(Command)、迭代器(Iterator)、访问者(Visitor)、备忘录(Memento)、状态(State)、职责链(Chain of Responsibility...

    设计模式--观察者 c++版本

    在给定的“设计模式--观察者 c++版本”中,我们主要关注的是观察者模式(Observer Pattern)在C++语言中的实现。观察者模式是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,...

    这是一套 Java 设计模式的集合示例-design-pattern.zip

    在"design-pattern-master"中,你可以期待找到各种设计模式的具体实现,每个模式通常会有独立的包或类,通过阅读和运行这些示例,你可以更好地理解这些模式的工作原理,并学习如何在实际项目中应用它们。此外,可能...

Global site tag (gtag.js) - Google Analytics