//合成模式--模拟建图 class Graphics { function draw() { } } class Line extends Graphics { function draw() { trace("line"); } } class Rect extends Graphics { function draw() { trace("rect"); } } class Circle extends Graphics { function draw() { trace("circle"); } } class Pictures extends Graphics { private var _index:Number = 0; private var _pic:Object; public function draw() { for (var i in _pic) { _pic[i].draw(); } } public function addGraph(g:Graphics) { _pic[_index] = g; _index++; } public function removeGraph(g:Graphics) { for (var i in _pic) { if (_pic[i] == g) { delete _pic[i], g; _index--; } } } public function set obj(o:Object) { _pic = o; } } var p1:Pictures = new Pictures(); var o1=new Object() p1.obj=o1 p1.addGraph(l1=new Line()); p1.addGraph(r1=new Rect()); p1.addGraph(r2=new Rect()); p1.addGraph(c1=new Circle()); p1.draw(); trace("/////"); p1.removeGraph(l1); p1.draw(); trace("/////"); var p2:Pictures = new Pictures(); var o2=new Object() p2.obj=o2 p2.addGraph(l2=new Line()); p2.addGraph(r2=new Rect()); p2.draw(); //output circle rect rect line ///// circle rect rect ///// rect line