ActionScript 3.0 Design Patterns

(Chris Devlin) #1

298 | Chapter 8: Observer Pattern


Example 8-12. ConcreteSubject.as


package
{
//Concrete Subject
public class ConcreteSubject implements Subject
{
private var news:String;
private var sports:String;
private var stocks:Number;
private var entertainment:String;
private var observers:Array;


//Add variable to check for duplicates
private var duplicate:Boolean;


//Constructor function
public function ConcreteSubject ( ):void
{
trace ("|Concrete Subject|");
observers=new Array( );
}
//Subscribe and Prevent Re-subscription
public function subscribeObserver (obserNow:Observer):void
{
var duplicate:Boolean = false;
for (var ob=0; ob<observers.length; ob++)
{
if (observers[ob]==obserNow)
{
duplicate=true;
trace (observers[ob].subName+ "
is already a subscriber.\n");
}
}
if (! duplicate)
{
observers.push (obserNow);
}
}
//Unsubscribe and remove from array
public function unsubscribeObserver (obserNow:Observer):void
{
for (var ob=0; ob<observers.length; ob++)
{
if (observers[ob]==obserNow)
{
observers.splice (ob,1);
}
}
}
//Set up notification and format output
public function notifyObserver ( ):void
{

Free download pdf