设计模式笔记之 - State

       如下图,展示了State模式,此模式和Strategy模式具有一定的相似性:

       State模式中,派生类持有回指向上下文类的引用,派生类的主要功能是使用这个引用选择并调用上下文类中的方法。在Strategy模式中,不存在这样的限制以及意图,Strategy的派生类不必支持有指向上下文类的引用,并且也不需要去调用上下文类的方法。

       State模式彻底地分离了状态机的逻辑和动作。动作是在Context类中实现的,而逻辑则是分布在State类的派生类中。这就可以使得二者可以非常容易的独立变化,互不影响。该方法另外一个好处就是它非常高效,基本上和嵌套的switch/case效率一样,因此,该方法具有表驱动的方法的灵活性,又具有嵌套switch/case方法的效率。

       使用此模式的代价体现在两个方面,第一,State派生类的编写是比较乏味的,编写一个具有20个状态机比较麻烦。第二,逻辑分散,无法在一个地方就看到整个状态逻辑。因此,就使得代码难以维护。

posted on 2005-09-25 15:39  dragonpro  阅读(454)  评论(0编辑  收藏  举报

Free Web Counter