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( );
}
}
}