AS3 Design Pattern: Simple Factory 模式

AS3 Design Pattern: Simple Factory 模式
2009年07月22日
  Simple Factory模式(又称Static Factory模式),一个Simple Factory生产成品,而对客户端隐藏产品产生的细节。实作时定义一个产品介面(interface),并透过特定静态方法来建立成品。
  假设有一个音乐盒工厂,购买音乐盒的客人不用知道音乐盒是如何制作的,他只要知道如何播放音乐盒就可以了,以 UML 类别图来表示以上的概念:
  
  
  如上图所示的,MusicBoxDemo代表了客户的角色,它只依赖于IMusicBox介面,而不关心特定的实作,实际如何产生IMusicBox的实例由MusicBoxFactory完成,以一个简单的程式来实现上面这个UML类别图
  [b]IMusicBox.as:[/b]
  package com.showping.dp
  {
  public interface IMusicBox
  {
  function play():void;
  }
  }[b]PianoBox .as[/b]
  public class PianoBox implements IMusicBox
  { public function play():void
  {
  trace("Piano is playing...");
  }
  }[b]ViolinBox .as[/b]
  public class ViolinBox implements IMusicBox
  { public function play():void
  {
  trace("Violoin is playing...");
  } }
  [b]createMusicBox.as[/b]
  import flash.system.ApplicationDomain;
  public class MusicBoxFactory
  { public static function createMusicBox(name:String):IMusicBox
  {
  var _str:String="com.showping.dp" + "." + name;
  var _box:Class=ApplicationDomain.currentDomain.getDefinition(_str) as Class;
  return new _box as IMusicBox;
  }
  } [b]Simple_Factory.as:[/b]
  package
  {
  import com.showping.dp.IMusicBox;
  import com.showping.dp.MusicBoxFactory;
  import com.showping.dp.PianoBox;
  import com.showping.dp.ViolinBox;
  import flash.display.Sprite; public class Simple_Factory extends Sprite
  {
  private var _piano:PianoBox;
  private var _violin:ViolinBox;
  public function Simple_Factory()
  {
  playMusicBox(MusicBoxFactory.createMusicBox("PianoBox"));
  playMusicBox(MusicBoxFactory.createMusicBox("ViolinBox"));
  } private function playMusicBox(musicBox:IMusicBox):void
  {
  musicBox.play();
  }
  }
  }AS3有个特点,就是不被引用的类是不会被编译的,这一点跟Java区别很大
  所以在Simple_Factory类里加入了两个引用,看似多余,其实必要,不然程序会报错。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值