ActionScript 3.0 Design Patterns

(Chris Devlin) #1
Example: Working with Different Data Displays | 319

The Concrete Classes and a Double Implementation


Both the concrete subject and observer classes are little changed from previous exam-


ple. No names are used because the subscribers are data display objects rather than


characters or live clients. So, these are actually a bit simpler than the last two exam-


ples. Open up two additional ActionScript files, and save Example 8-23 and


Example 8-24 using the caption names as filenames.


Example 8-23. ConcreteSubject.as


package
{
//Concrete Subject
public class ConcreteSubject implements Subject
{
private var q1:Number,q2:Number,q3:Number,q4:Number;
private var observers:Array;
function ConcreteSubject( ):void
{
observers=new Array( );
}
public function subscribeObserver(obserNow:Observer):void
{
observers.push(obserNow);
}
public function unsubscribeObserver(obserNow:Observer):void
{
for (var ob=0; ob<observers.length; ob++)
{
if (observers[ob]==obserNow)
{
observers.splice(ob,1);
}
}
}
public function notifyObserver( ):void
{
for (var notify in observers)
{
observers[notify].update(q1,q2,q3,q4);
}
}
public function setQuarter(q1:Number,q2:Number,
q3:Number,q4:Number):void
{
this.q1=q1;
this.q2=q2;
this.q3=q3;
this.q4=q4;
notifyObserver( );
}
}
}

Free download pdf