`
eriol
  • 浏览: 405499 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Head First 设计模式--State

阅读更多

Chapter 10 --状态模式

                                   事务的状态

 

 

1. 把一个状态的所有行为放在一个类中。这样将行为局部化,并使得事情更容易改变和理解。

 

2. 在状态类中要做的事情是实现适合所在的状态的行为。在某些情况下,这个行为会转变到其他状态。

 

 

状态模式:

允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。

 

State

Structure

  • Context: Context(上下文)是一个类,它可以拥有一些内部状态。不管是在什么时候,只要有人调用Context的request()方法,它就会被委托到状态来处理。
  • State: State接口定义了一个所有具体状态的共同接口;任何状态都实现这个相同的接口,这样,状态之间可以互相替换。
  • ConcreteState: 具体状态处理来自Context的请求。每一个ConcreteState都提供了它自己对于请求的实现。所以,当Context改变状态时行为也跟着改变。可以有许多具体的状态。

 

3. 该模式将状态封装成为独立的类,并将动作委托到代表当前状态的对象,这样行为就会随着内部状态而改变。该模式使用组合通过简单引用不同的状态对象来造成类改变的假象。



状态模式和策略模式的区别

(1) 对于状态模式,我们将一群行为封装在状态对象中,context的行为随时可委托到那些状态对象中的一个。随着时间的流逝,当前状态在状态对象集合中游走改变,以反映出context内部的状态,因此context的行为也会跟着改变。但是context的客户对于状态了解不多。
(2) 对于策略模式,客户通常主动指定context所要组合的策略对象是哪一个。对于某个context对象来说,通常都只有一个最适当的策略对象。
(3) 策略模式是除了继承之外的一种弹性的替代方案,你可以通过组合不同的对象改变行为。而状态模式为了不用在context中放置许多条件判断的替代方案。通过将行为包装进状态对象中,你可以通过在context内简单地改变状态对象来改变context的行为。


本章小结:
  • 状态模式允许一个对象基于内部状态而拥有不同的行为。
  • 和程序状态机(PSM)不同,状态模式用类代表状态。
  • Context会将行为委托给当前状态对象。
  • 通过将每个状态封装进一个类,我们把以后需要做的任何改变局部化了。
  • 状态模式和策略模式有相同的类图,但是它们的意图不同。
  • 策略模式通常会用行为或算法来配置Context类。
  • 状态模式允许Context随着状态的改变而改变行为。
  • 状态转换可以由State类或Context类控制。
  • 使用状态模式通常会导致设计中的类的数目大量增加。
  • 状态类可以被多个Context实例共享。

 

0
0
分享到:
评论

相关推荐

    Head First 设计模式-中文版

    《Head First 设计模式》是IT领域内广受赞誉的一本书,主要针对C#和Java开发者,深入浅出地介绍了设计模式这一核心编程概念。设计模式是软件开发中经过实践验证的解决方案模板,用于解决常见问题,提升代码的可读性...

    Headfirst设计模式中文高清PDF+附书源码

    《Headfirst设计模式》是一本深受开发者欢迎的设计模式学习书籍,尤其对于初学者而言,其独特的教学方式使得复杂的概念变得易于理解。这本书以其高清的中文版PDF格式提供,结合书中源码,为读者提供了深入实践的可能...

    HeadFirst设计模式JAVA版源码

    《HeadFirst设计模式JAVA版源码》是一份深入学习设计模式的重要资源,它基于流行的编程语言Java,旨在帮助开发者理解并应用设计模式于实际项目中。设计模式是软件工程中的重要概念,它代表了在特定场景下解决问题的...

    [中文]Head-First设计模式

    《Head-First设计模式》是设计模式领域内一本广受欢迎的入门书籍,以其独特的视觉呈现方式和易懂的讲解风格,让初学者也能快速理解并掌握设计模式的精髓。设计模式是软件工程中的一种最佳实践,是解决常见编程问题的...

    Head-First-Design-Patterns-master.zip

    《Head First设计模式》是一本深受开发者喜爱的设计模式入门书籍,其官方源码库"Head-First-Design-Patterns-master.zip"包含了书中所讲解的各种设计模式的实际代码示例,旨在帮助读者更深入地理解并应用这些模式。...

    headfirst设计模式

    《Head First设计模式》是一本深受开发者欢迎的设计模式教程,以其独特的视觉呈现方式和易于理解的语言,让初学者也能快速掌握设计模式的核心概念。这本书深入浅出地介绍了23种GOF(GoF,Gamma、Erich、Johnson、...

    head first 设计模式

    《Head First设计模式》(中文版)共有14章,每章都介绍了几个设计模式,完整地涵盖了四人组版本全部23个设计模式。前言先介绍这本书的用法;第1章到第11章陆续介绍的设计模式为Strategy、Observer、Decorator、...

    Head First设计模式 源代码

    《Head First设计模式》是一本深受开发者喜爱的设计模式学习书籍,它以易懂、生动的方式讲解了23种经典的设计模式。源代码是书中理论知识的实践体现,可以帮助读者更深入地理解并应用这些模式。这里我们将围绕这些...

    HeadFirst设计模式英文版

    《Head First 设计模式》的英文版是一本面向初学者的设计模式入门书籍,它以幽默风趣的文风,深入浅出地介绍了软件设计中经常使用的设计模式。设计模式是一套被反复使用、多数人知晓、经过分类编目、代码设计经验的...

    HEAD FIRST设计模式

    《Head First设计模式》(中文版)共有14章,每章都介绍了几个设计模式,完整地涵盖了四人组版本全部23个设计模式。前言先介绍这本书的用法;第1章到第11章陆续介绍的设计模式为Strategy、Observer、Decorator、...

    HeadFirst设计模式(深入浅出设计模式)-高清

    《HeadFirst设计模式》是一本深受开发者喜爱的经典书籍,它以独特的方式深入浅出地讲解了设计模式这一重要编程概念。设计模式是软件工程中经过实践验证的、解决常见问题的有效解决方案,对于提升代码可读性、可维护...

    Head First 设计模式 JAVA源码

    《HeadFirst设计模式》(中文版)共有14章,每章都介绍了几个设计模式,完整地涵盖了四人组版本全部23个设计模式。前言先介绍这本书的用法;第1章到第11章陆续介绍的设计模式为Strategy、Observer、Decorator、...

    Head First设计模式官方原码

    《Head First设计模式》是一本深受开发者欢迎的设计模式学习书籍,以其独特的教学方式,通过丰富的图解和幽默的语言,帮助读者深入理解设计模式的核心概念。这本书的官方源码提供了书中所讲解的每个设计模式的实际...

    HeadFirst 设计模式java源代码

    《Head First设计模式》(中文版)共有14章,每章都介绍了几个设计模式,完整地涵盖了四人组版本全部23个设计模式。前言先介绍这本书的用法;第1章到第 11章陆续介绍的设计 5b4 式为Strategy、Observer、Decorator、...

    Head First设计模式 高清 中文版-扫描版

    《Head First设计模式》是一本深受开发者欢迎的设计模式教程,尤其适合初学者入门。这本书以其独特的视觉风格和轻松的叙述方式,将复杂的概念转化为易于理解的故事和互动元素,使得学习设计模式的过程不再枯燥乏味。...

    Head First 设计模式(中文版)

    《Head First设计模式》(中文版)共有14章,每章都介绍了几个设计模式,完整地涵盖了四人组版本全部23个设计模式。前言先介绍这本书的用法;第1章到第11章陆续介绍的设计模式为Strategy、Observer、Decorator、...

    Head First 设计模式 扫描版

    《Head First 设计模式》是软件开发领域内一本广受欢迎的书籍,由Eric Freeman、Elisabeth Robson、Bert Bates和Kathy Sierra四位作者共同撰写。这本书以其独特的视觉风格和易于理解的教学方法,深入浅出地介绍了...

    Head.First设计模式_PDF

    《Head First设计模式》是一本深受开发者欢迎的设计模式学习书籍,以其独特的教学方式,通过丰富的图解和幽默的叙述,使复杂的设计模式概念变得生动易懂。这本书主要讲解了面向对象设计中的23种经典设计模式,是软件...

    Head First 设计模式(中文版.pdf

    《Head First 设计模式》是一本面向初学者的权威设计模式指南,中文版的出版使得更多的中国读者能够轻松地理解并掌握这一领域的精髓。设计模式是软件开发中的重要概念,它代表了在特定情境下解决问题的成熟方法,是...

Global site tag (gtag.js) - Google Analytics