AS2与设计模式(一)---简单工厂模式

本文介绍了AS2中的简单工厂设计模式。简单工厂模式中,用户通过接口参数告知加工者所需产品,加工者据此制造。还以初级物理演示系统为例,说明了该模式在系统中的具体实现,包括场景切换和效果演示等代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

AS2与设计模式(一)---简单工厂模式:
     "想出设计模式的人是天才,而学会他的人最多只能算是一个好的工匠"----某个高人

简单工厂模式恐怕是所有设计模式里最好懂的一个了,难怪我这个菜鸟也能写篇文章来介绍它了:

     简单工厂模式总体上是这样运作的:
用户通过一个接口参数(整数或String之类)告诉加工者你想要的具体产品,然后加工者就通过
if (argu==0)
 return new ConcreteProduct0();
else if(arug==1)
        return new ConcreteProduct1();
else if(argu==2)
 return new ConcreteProduct2();
....
的方式来制造相关的产品,怎么样?很好懂吧.

     下面,我就以我最近做的一个初级物理演示系统来具体说明一下:
这个演标系统中有两个顶层对象,一个是SceneManager,它负责着场景的切换,也就是相当于制造者的地位.
还有一个是指向IEffect接口类的EffectManager对象,随时等候SceneManager的命令,要它当前演示什么效果,
它就演示什么效果,也就是相当于充当着我们的产品的角色.
主场景中用于初始化的代码如下:
import Sdgp.SMag.SceneMag;
import Sdgp.SEffect.*;
fscommand("allowscale",false);
var SceneManager:SceneMag=new SceneMag();
var EffectManager:ISEffect=new CS2BallConserve();//默认状态为二球动理守恒的演示.
SceneManager.init();
EffectManager.init();

//SceneMag类中用以实现简单工厂模式的代码段.
class Sdgp.SMag.SceneMag extends RCSMag
{      ....
 private var mComMag:ISComMag;
 ....
 public function changeItem(num:Number):ISEffect
 {
  if(num==0)return new CS2BallConserve();
  else if(num==1)return new CS3BallConserve();
  else if(num==2)return new CSMultiBallCol();
  else if(num==3)return new CSZMBall();
  else
  {
   trace("unfinished items");
   return undefined;
  }
 }
}

//“制造”这个动作由menuCombo的change事件来激发.
  public function msgChange(evt:Object):Void
 { ....
   if(evt.target==_root.menuCombo)
  {      ...
   //一些判定及扫尾工作....
 _root.EffectManager=_root.SceneManager.changeItem(_root.menuCombo.selectedIndex);//就是这句用以制造哟~~~
   ...
   _root.EffectManager.init();
   _root.fpsCombo.enabled=true;

  }
        }
 
怎么样,我讲的还算清楚吧~~~:)
效果演示请点击这里:
http://www.flash8.net/bbs/UploadFile/2005-3/2005326211019860.swf 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值