`
tigers20010
  • 浏览: 48596 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java设计模式之精通state pattern

阅读更多

如果大家对文章内容有不理解的地方,尽情留言或QQ(1357208561) 讨论。让大家共同进步。

 

     呵呵,标题显得有点大额。最近老转载别人的文章,觉得自己也该拿出点原创的来才行。我在公司近期的项目中,有用到state pattern的,上网google了下,发现大多数文章介绍的都不算太清楚,所以这里谈下本人的理解,通俗易懂。

State pattern 又叫状态模式。为什么会出现这样一种设计模式呢???下面我给你一一道来。项目中有这种需求:一个出差申请(以btripApplication对象定义),要经过多个审批人(approver)审批通过,该出差申请才能通过,并且在每个审批人处理时会执行多种操作(同意,拒绝等),该btripApplication的状态(status)都会有所变化。初步设计如下:

Service层:

  创建btripServiceImpl.java,其中还有的方法大致有:

public void  approveBtripApplication btripapplication{}同意该申请

public void   rejectBtripApplication btripapplication{}拒绝该申请

public void   cancle(BtripApplication btripapplication){}取消该申请

 

…………

 

每个approver approve时,都会调用approve()方法。在该方法里大致的处理为:更改btripApplication状态(不同的approver处理其状态会不一样,并且其逻辑会有点复杂),发送邮件等等。同理approver进行其他操作时,设计到btrpApplication的状态改变时都会在相应的方法里处理。 也许你会说这样也没什么的。但是在实际的项目中,一个approver approve时,要处理的事情很多很多,而且会随着当前系统登录角色的不同,其处理也将不同。如果要坚持在每个approver调用的方法里,处理btripApplication状态改变的逻辑,其程序间的耦合性将增加(在很多方法里都有状态改变的逻辑),我们要尽量 降低程序间的耦合性,而不是相互依赖。为此才引入了设计模式。一个btripApplication的状态图为:(大概)

其中方框为btripApplication状态,引出的线条为该状态时可以做出的操作。

((图片在附件中))

以面向对象思绪去看该图,可以把btripApplication的每一个status看作一个类(如:diraftStatus.java,该类具有一些行为(如:doCancle(),doApprov().具体调用该类的某些行为,可以为该类传入一些事件。并可以为每个status类创建一个共用接口(接口在于设计和应用变得简单)。 这样就可以把btripApplication status改变时做 的大部分逻辑,放到这些状态类里实现呢。大大降低了程序间的耦合性。

举个简单例子,在实际应用中可以对这些类进行可充。

Public interface btripApplicationState

{

  Public void execute(int event);

}

 

Public void DraftStatus implements btripApplicationState {

Public void execute(int event){

   Switch(event){

   Case BtripApplicationsEvent.APPROVE:

      doApprove();

      breaik;

  case BtripApplicationsEvent.Cancle:

      doReject();

      break;

   

}

}

   Public void doApprove(){

  ………………

}

Public void doReject(){

 …………………….

}

}

 

 

 

 

                 

  • 描述: btripApplication status picture
  • 大小: 6.7 KB
1
1
分享到:
评论
1 楼 kensunhu 2012-06-14  
兄弟啊,你只开了个头,有点虎头蛇尾的。能把这个CASE的设计类图给出就好了。

相关推荐

    Java设计模式之禅

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

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

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

    JAVA设计模式chm文档

    创建模式: 设计模式之Factory 设计模式之Prototype(原型) 设计模式之Builder ...设计模式之State 设计模式之Strategy(策略) 设计模式之Mediator(中介者) 设计模式之Interpreter(解释器) 设计模式之Visitor

    Java设计模式 设计模式介绍

    章节介绍:1、爪哇语言结构性模式之变压器模式介绍 2、爪哇语言抽象工厂创立性模式介绍 3、工厂方法创立...10、设计模式之State 11、设计模式之Facade(外观) 12、设计模式之Interpreter(解释器) 13、设计模式之Visitor

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

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

    试谈java设计模式之State.pdf

    Java 设计模式之 State 模式详解 State 模式是 Java 设计模式的一种,用于解决状态切换问题。当对象的状态改变时,对象的行为也随之改变。State 模式将状态和行为分离,实现了状态切换的灵活性和可扩展性。 定义:...

    试谈java设计模式之State.docx

    Java 设计模式之 State 模式 State 模式是一种行为型设计模式,它允许对象在其内部状态改变时改变其行为。该模式的主要思想是将对象的状态和行为分离,使用不同的状态子类来实现不同的行为。 何时使用 State 模式...

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

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

    Java设计模式刘伟书本中模拟考试答案

    在《Java设计模式》这本书的模拟试题及其参考答案中,涉及了多条设计模式的知识点,以及它们的应用场景和实现方法。现在将这些知识点详细地解释如下: 1. 开闭原则(Open-Closed Principle, OCP): 开闭原则是面向...

    状态模式 State Pattern

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

    Java设计模式(第二版)中文版

    ### Java设计模式(第二版)中文版 #### 思维框架的培养;对新手与码农均适用 在软件开发领域,设计模式是一种被广泛采用的解决方案,它可以帮助开发者更好地组织代码、解决常见问题,并提高软件的整体质量和可维护...

    JAVA design pattern-java设计模式

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

    23种java设计模式.pdf

    " JAVA 设计模式概述" JAVA 设计模式是指在软件设计过程中,为了提高代码的可维护性、灵活性和可扩展性所使用的一些惯用解决方案。JAVA 设计模式可以分为三种:创建模式、结构模式和行为模式。 1. 创建模式 创建...

    JAVA 23种设计模式(全).Design Pattern_Java模式

    本资料包“JAVA 23种设计模式(全).Design Pattern_Java模式”涵盖了所有23种经典的GOF(GoF,Gang of Four)设计模式,旨在帮助开发者深入理解和应用这些模式。 首先,我们来看一下23种设计模式的分类: 1. **创建...

    JAVA设计模式-chm版

    Java设计模式是软件开发中的一种最佳实践,它总结了在解决特定问题时程序员们经常采用的有效方法。这个“JAVA设计模式-chm版”资源显然包含了关于Java设计模式的详细信息,便于理解和应用。设计模式是对常见问题的...

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

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

    JackChan1999#Java-Degisn-Patterns#状态模式-State Pattern1

    状态模式-State Pattern状态模式-State Pattern【学习难度:,使用频率:】状态模式-State Pattern处理对象的多种状态及其相互

    《Java设计模式》模拟试题参考答案及评分标准-刘伟(20180723).pdf

    根据提供的文档信息,我们可以从这份《Java设计模式》模拟试题参考答案及评分标准中提炼出以下关键知识点: ### 一、基础知识与概念 #### 1. 设计模式基础概念 - **里氏替换原则**(Liskov Substitution Principle...

    JAVA设计模式之行为模式

    这是JAVA设计模式中属于行为模式的部分,包括Template(模板模式)、Chain of Responsibility(责任链模式)、Memento(纪念品模式)、Mediator(中介模式)、Strategy(策略模式)、State 、Observer(观察者模式)、Visitor...

Global site tag (gtag.js) - Google Analytics