state pattern 的应用实例

原创 2001年07月23日 13:05:00

 

 

上图是我解决MATLAB中基本类Array的STATE PATTERN 实现,每个STATE子类是一个SINGLETON模式,Array中的void * m_data根据当前状态决定是什么类型的指针。
采用这种方式的好处
1、可复用complex string 等
2、改变类型不需要重新分配类(某些实现需要重新分配类),例如,template实现
3、一元操作符不需要循环判断
4、m_data可以统一处理(vcc_cn给出的实现好像不能完成这一点)
5、增加新的类型不需要修改其它程序,如果类型和程序相关(比如add程序中有类型信息),则增加类型时所有的这些程序都要修改,浩大的工作量和潜在的危险

6、各state子类全局只分配一次,增加效率

bridge,strategy模式都可以用来完成算法实现的动态选择,但是对象开销很大,使用state模式实现则只需要一个对象。比较这三个模式我们发现如果算法本身没有自己的数据的话,完全可以把算法定义为在某状态下执行(小花招)。
在数学运算时用到的complex类相对较少,如果把所有的参与运算的对象都定义成complex影响效率,因此会出现在运行中改变类型的情况,例如,x=5(double),x=x+5i,则此时结果x必须是complex,如果采用template实现,则要重新分配类。采用state实现,只要重新分配数据指针(void * m_data)就可以了,把“状态”由double变成complex,十分平滑,此时如果运行x->sin().调用的是complex的实现,很平滑吧。
这个模式还有很多问题没有解决,例如复杂的数据类型。

维数可变也特别可恶,目前尚无良好的方法来平滑这种改变,例子:
x=[1,2,3](一维数组) x(3,3)=6i(立刻变成3*3的二维complex数组),此时要利用complex函数库还要经过转换,十分的不方便。

可以发信给我

 

 

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

状态模式(state pattern) 详解本文地址: http://blog.csdn.net/caroline_wendy状态模式(state pattern): 允许对象在内部状态改变时改变它的...
  • u012515223
  • u012515223
  • 2014年07月11日 17:42
  • 2145

[C++] State Pattern 实作

状态模式(State Pattern)属于行为型模式 在状态模式下,在情境中的一个对象可执行的行为会随着状态对象的改变而变化,因此状态模式又被归类为行为型模式。 适合使用此模式的情况:...
  • jordan5226
  • jordan5226
  • 2016年03月22日 23:45
  • 367

"围观"设计模式(21)--行为型之状态模式(State Pattern)

状态模式--允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。----百度百科 个人理解 状态模式应该说可以理解为某种状态下,程序的执行流程可能会发生变化,类...
  • wangyang1354
  • wangyang1354
  • 2016年06月13日 15:11
  • 3456

State Design Pattern

1.意图:允许一个对对象改变自己状态时改变他的行为;对象看起来修改了自己的类;2.适用性:1)一个对象的行为取决于他的状态,并且只有在运行时刻根据状态改变行为;2)一个操作中有庞大的条件分支,并且这些...
  • kissjob
  • kissjob
  • 2011年07月13日 14:09
  • 556

Game Loop - Game Programming Patterns

《Game Programming Patterns》书中的一节,讲的很清楚,只是没有考虑多线程。 普通的三段操作:ProcessInput,Update,Render是玩命的用CPU。三段操作上,给...
  • bearcoding
  • bearcoding
  • 2016年07月18日 22:30
  • 740

State Pattern

Definition-Allow an object to alter its behavior when its internal state changes. The object will ap...
  • Rya
  • Rya
  • 2007年12月02日 15:23
  • 994

c语言实现有限状态机

有限状态机是一种数学概念,运用到程序中,可用于有限数量的状态的变化,每个子程序进行一些处理并选择下一种状态。 基本的实现思路就是用一张表保存所有可能的状态,并列出进入每个状态时可能执行的所有动作,其...
  • qp120291570
  • qp120291570
  • 2013年03月04日 17:00
  • 4415

设计模式(行为型)之访问者模式(Visitor Pattern)

访问者模式是一种较为复杂的行为型设计模式,它包含访问者和被访问元素两个主要组成部分,这些被访问的元素通常具有不同的类型,且不同的访问者可以对它们进行不同的访问操作。访问者模式使得用户可以在不修改现有系...
  • yanbober
  • yanbober
  • 2015年05月06日 17:11
  • 3226

Design Pattern(3)-State Pattern

学过编译原理应该知道有限状态机,状态模式就是适用于那种希望 一个对象在不同状态下呈现不一样的行为的一种design pattern。我们以一个实例来诠释,有一个Door对象,Door对象有两个状态:O...
  • jieFengDi
  • jieFengDi
  • 2017年03月09日 20:55
  • 294

C++实现设计模式 - STATE(状态)—对象行为模式(第二十个)

一. 模式定义:        状态模式(State Pattern):允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。其别名为状态对象(Objects for States)...
  • u013354805
  • u013354805
  • 2015年06月18日 10:31
  • 803
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:state pattern 的应用实例
举报原因:
原因补充:

(最多只允许输入30个字)