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

Java设计模式之状态模式

阅读更多

STATE (Object Behavioral) 
Purpose 
Ties object circumstances to its behavior, allowing the object 
to behave in different ways based upon its internal state. 
Use When 
    1 The behavior of an object should be influenced by its state. 
    2 Complex conditions tie object behavior to its state. 
    3 Transitions between states need to be explicit. 
Example 
An email object can have various states, all of which will 
change how the object handles different functions. If the state 
is “not sent” then the call to send() is going to send the message 
while a call to recallMessage() will either throw an error or do 
nothing. However, if the state is “sent” then the call to send() 
would either throw an error or do nothing while the call to 
recallMessage() would attempt to send a recall notification 
to recipients. To avoid conditional statements in most or all 
methods there would be multiple state objects that handle the 
implementation with respect to their particular state. The calls 
within the Email object would then be delegated down to the 
appropriate state object for handling. 

Java代码 
  1. package javaPattern.state;  
  2.   
  3. public interface State {  
  4.     public void handle(Context context);  
  5. }  
  6.   
  7. class ConcreteStateA implements State{  
  8.   
  9.     @Override  
  10.     public void handle(Context context) {  
  11.         //在A中设置B状态  
  12.         context.setState(new ConcreteStateB());  
  13.     }  
  14.       
  15. }  
  16. class ConcreteStateB implements State{  
  17.   
  18.     @Override  
  19.     public void handle(Context context) {  
  20.         //在B中设置A状态  
  21.         context.setState(new ConcreteStateA());  
  22.     }  
  23.       
  24. }  
  25. class Context {  
  26.     private State state;  
  27.   
  28.     public State getState() {  
  29.         return state;  
  30.     }  
  31.   
  32.     public void setState(State state) {  
  33.         this.state = state;  
  34.         System.out.println("当前设置的状态是"+state.getClass().getName());  
  35.     }  
  36.   
  37.     public Context(State state) {  
  38.         this.state = state;  
  39.     }  
  40.     public void request(){  
  41.         this.state.handle(this);  
  42.     }  
  43.     public static void main(String[] args) {  
  44.         Context context = new Context(new ConcreteStateA());  
  45.         context.request();  
  46.     }  
  47.       
  48. }  

分享到:
评论

相关推荐

    java 设计模式之状态模式

    状态模式是一种行为设计模式,它允许对象在内部状态改变时改变其行为,看起来好像对象改变了它的类。在Java中,状态模式通常通过定义不同的状态类和一个上下文类来实现,其中上下文类持有状态对象并调用其方法来响应...

    java设计模式之状态模式

    状态模式是一种行为设计模式,它允许对象在内部状态改变时改变其行为,对象看起来似乎修改了它的类。...在Java编程中,熟练掌握和应用设计模式,如状态模式,能够提升代码质量,使程序更加灵活、可扩展和易于维护。

    详解JAVA 设计模式之状态模式

    JAVA 设计模式之状态模式 状态模式是行为型设计模式,主要用于解决对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关行为。该模式允许对象在内部状态发生改变时改变它的行为,对象看起来...

    55-Java设计模式之策略模式与状态模式1

    Java 设计模式之策略模式与状态模式 策略模式是 Java 中的一种设计模式,它主要用于解决系统与第三方接口进行数据交互的问题。当系统需要与多种格式的数据进行交互时,使用策略模式可以很好地解决这个问题。例如,...

    java设计模式之-状态模式-实现

    在Java设计模式中,状态模式的核心概念包括以下几个部分: 1. **状态(State)**:这是个接口或抽象类,定义了状态对象的公共行为。每个状态都对应一个特定的操作集,这些操作可能会影响对象的状态。 2. **具体...

    JAVA设计模式(java设计)

    Java设计模式是面向对象编程领域中的重要概念,它是一套被广泛接受并实践的解决软件设计问题的经验总结。设计模式并非具体的代码或库,而是一种在特定情境下为了解决常见问题而制定的通用解决方案的描述。它们描述了...

    Java设计模式之禅

    《Java设计模式之禅》是一本深入浅出讲解设计模式的书籍,书中不仅包含23种经典设计模式的案例,还详细介绍了设计模式背后的思想和原则,适合初学者以及对设计模式有一定了解的程序员阅读。本书旨在帮助读者理解如何...

    《Java设计模式》刘伟 课后习题及模拟试题答案.rar

    《Java设计模式》是刘伟老师的一本经典教材,它深入浅出地讲解了软件设计中的重要概念——设计模式。设计模式是经验丰富的开发者在解决常见问题时总结出的通用解决方案,是软件开发中的智慧结晶。这本书的课后习题和...

    JAVA设计模式之行为模式 责任链模式和状态模式

    【JAVA设计模式】在软件开发中,设计模式是解决常见问题的经验总结,它们提供了一种在特定场景下高效、可扩展的解决方案。本篇将探讨两种重要的行为设计模式:责任链模式(Chain of Responsibility Pattern)和状态...

    《java设计模式》课后习题模拟试题解答——刘伟.zip

    Java设计模式是软件工程中的一种最佳实践,它总结了在特定场景下解决常见问题的经验,为程序员提供了可重用的解决方案。本资料“《java设计模式》课后习题模拟试题解答——刘伟.zip”主要涵盖了Java设计模式的学习与...

    java 设计模式试题

    题目中的第一个选项“同一问题的不同表现形式”(A) 描述了设计模式的主要应用场景之一。设计模式帮助开发者处理常见的软件设计难题,确保代码的可读性、可维护性和可扩展性。 ### 2. 面向对象的基本原则 面向对象...

    java-设计模式-状态模式-模拟审批流程-二级审批 完整代码

    状态模式是一种行为设计模式,它允许对象在内部状态改变时改变其行为,对象看起来似乎修改了它的类。在这个示例中,我们关注的是如何使用Java实现一个审批流程,特别是涉及二级审批的场景。这个压缩包文件包含了一个...

    Java设计模式之状态模式(State模式)介绍

    在Java设计模式中,状态模式的核心思想是封装可能改变的对象状态,并将这些状态的行为委托给各自独立的类。这样,对象的行为会根据其当前状态自动改变,而无需显式地检查和处理各种状态。状态模式通常涉及到以下几个...

    java设计模式.高清影印版

    Java设计模式是软件工程中的一种最佳实践,它提供了一套标准的解决方案,用于解决在编写可维护、可扩展和高效代码时经常遇到的问题。这些模式是经验丰富的开发者们在面对相似问题时,经过反复试验和优化后总结出的...

    java设计模式ppt

    ### Java设计模式详解 在软件开发领域,设计模式是一种被广泛采用的解决方案,用来解决常见的设计问题。设计模式不仅能够帮助开发者写出可复用、可维护的代码,还能提高团队间的沟通效率。以下是对给定文件中提到的...

    java设计模式-状态

    状态模式是一种行为设计模式,它允许对象在内部状态改变时改变其行为,对象看起来似乎修改了它的类。在Java中,这种模式常用于处理对象在不同状态下的多种行为,使得代码更加灵活,易于维护和扩展。 状态模式的核心...

    《Java设计模式》课后答案-刘伟.rar

    《Java设计模式》是刘伟教授的一本关于设计模式的教材,主要面向高等学校的学生和对Java编程有深入兴趣的开发者。设计模式是软件工程中的一种重要思想,它封装了在特定场景下的问题解决方案,可以提高代码的可读性、...

    重学java的设计模式

    Java作为一门广泛应用的开发语言,其设计模式的应用对于提高代码质量、可维护性和可扩展性至关重要。本文将着重探讨创建型模式、结构型模式和行为模式这三大类设计模式,并结合六项设计原则进行深入解析。 首先,...

Global site tag (gtag.js) - Google Analytics