ActionScript 3.0 Design Patterns

(Chris Devlin) #1

304 | Chapter 8: Observer Pattern


Example 8-17. ConcreteSubject.as


package
{
//Concrete Subject
public class ConcreteSubject implements Subject
{
private var score:Number;
private var damage:String;
private var duplicate:Boolean;
private var observers:Array;


public function ConcreteSubject ( )
{
observers=new Array( );
}
//Subscribe observer without duplicates
public function subscribeObserver (obserNow:Observer):void
{
duplicate=false;


for (var ob=0; ob < observers.length; ob++)
{
if (observers[ob] == obserNow)
{
duplicate=true;
trace ("Sorry, " + observers[ob].nomDeGuerre +
" is already subscribed.");
}
}
if (! duplicate)
{
observers.push (obserNow);
}
}
//Unsubscribe observer
public function unsubscribeObserver (obserNow:Observer):void
{
for (var ob=0; ob < this.observers.length; ob++)
{
if (observers[ob] == obserNow)
{
trace ("\n" + this.observers[ob].nomDeGuerre +
" has been removed.
\n");
observers.splice (ob,1);
}
}
}
//Notify observers of total score and current damage
public function notifyObserver (score:Number,damage:String):void
{
for (var notify in observers)
{
observers[notify].update (score,damage);

Free download pdf