//建造模式 //产品类 class cigarette { private var cigaretteCase; //烟盒 private var filterTip; //过滤嘴 function getCigaretteCase(c) { cigaretteCase = c; } function getFilterTip(f) { filterTip = f; } function traceCigarette() { trace([cigaretteCase, filterTip]); } } //抽象建造者 interface builder { function buildCigaretteCase(); function buildFilterTip(); function getCigarette():cigarette; //返回产品的方法 } //中华烟的具体建造者 class zhonghua implements builder { private var machine:cigarette; //建造一个生产中华烟的机器 function zhonghua() { machine = new cigarette(); } function buildCigaretteCase() { machine.getCigaretteCase("中华烟盒"); } function buildFilterTip() { machine.getFilterTip("中华过滤嘴"); } function getCigarette():cigarette { return machine; } } //大红鹰的具体建造者 class dahongying implements builder { private var machine:cigarette; //建造一个生产大红鹰的机器 function dahongying() { machine = new cigarette(); } function buildCigaretteCase() { machine.getCigaretteCase("大红鹰烟盒"); } function buildFilterTip() { machine.getFilterTip("大红鹰过滤嘴"); } function getCigarette():cigarette { return machine; } } //导演者 class Director { function Director() { } //建造具体的什么香烟 static function Direct(t:builder):cigarette { t.buildCigaretteCase(); //建造烟盒 t.buildFilterTip(); //建造过滤嘴 return t.getCigarette(); } } //造中华 var product1:cigarette = Director.Direct(new zhonghua()); product1.traceCigarette(); //造大红鹰 var product2:cigarette = Director.Direct(new dahongying()); product2.traceCigarette();