Home arrow Flash arrow Page 3 - The Decorator Pattern in Action
FLASH

The Decorator Pattern in Action


In this third part of a six-part series on the Decorator pattern, we move from last week's conceptual example to something more concrete: using the pattern to decorate a paper doll. This article is excerpted from chapter four of ActionScript 3.0 Design Patterns Object Oriented Programming Techniques, written by William B. Sanders and Chandima Cumaranatunge (O'Reilly, 2007 ISBN: 0596528469). Copyright © 2007 O'Reilly Media, Inc. All rights reserved. Used with permission from the publisher. Available from booksellers or direct from O'Reilly Media.

Author Info:
By: O'Reilly Media
Rating: 4 stars4 stars4 stars4 stars4 stars / 7
December 11, 2008
TABLE OF CONTENTS:
  1. · The Decorator Pattern in Action
  2. · Decorator Class: Dressing the Dolls
  3. · Concrete decorator classes
  4. · Implementing the Paper Doll Decorator

print this article
SEARCH DEVARTICLES

The Decorator Pattern in Action - Concrete decorator classes
(Page 3 of 4 )

 

Moving from the minimalist example previously shown in this chapter, itís a little easier to see how the Decorator pattern works by actually seeing something happening in a graphic display. When the initial instance of the concrete component is created, all references in the concrete decorator class are to that instance. (See example 4-16, where the concrete component is wrapped in the decorators.) In all the concrete decorator classes, the reference to the model variable is a reference to the concrete component object. In this case, thatís the instance of the Sue() class, but it can be any instance of any concrete component. Thatís why, if you wish to expand the application to include more concrete components (paper dolls to dress), you donít have to make any fundamental changes. Just add another concrete component class. In Examples 4-10 to 4-15, the captions are the filenames.

Example 4-10. OrangeDress.as

package
{
   public class OrangeDress extends Dresser
   {
     
private var model:Model;
      public function OrangeDress(model:Model)
      {
        
this.model=model;
      }
      override public function getDressed():String
      {
        
return model.getDressed() + "~orangedress";
      }
   }
}

Example 4-11. BlueDress.as

package
{
   public class BlueDress extends Dresser
   {
     
private var model:Model;
      public function BlueDress(model:Model)
      {
         this.model=model;
      }
      override public function getDressed():String
      {
        
return model.getDressed() + "~bluedress";
      }
   }
}

Example 4-12. Bow.as

package
{
   public class Bow extends Dresser
   {
     
private var model:Model;
      public function Bow(model:Model)
      {
        
this.model=model;
      }
      override public function getDressed():String
      {
        
return model.getDressed() + "~bow";
      }
   }
}

Example 4-13. Umbrella.as

package
{
   public class Umbrella extends Dresser
   {
     
private var model:Model;
      public function Umbrella (model:Model)
      {
        
this.model=model;
      }
      override public function getDressed():String
      {
        
return model.getDressed() + "~ umbrella ";
      }
   }
}

Example 4-14. Hat.as

package
{
   public class Hat extends Dresser
   {
     
private var model:Model;
      public function Hat(model:Model)
      {
        
this.model=model;
      }
      override public function getDressed():String
      {
        
return model.getDressed() + "~hat";
      }
   }
}

Example 4-15. Muff.as

package
{
   public class Muff extends Dresser
   {
     
private var model:Model;
      public function Muff(model:Model)
      {
        
this.model=model;
      }
      override public function getDressed():String
      {
        
return model.getDressed() + "~muff";
      }
   }
}

All six decorations can be used in any combination you want with the instance of theModelclass. This next section shows how to implement the Decorator pattern using the different decorators.


blog comments powered by Disqus
FLASH ARTICLES

- More Top Flash Game Tutorials
- Top Flash Game Tutorials
- Best Flash Photo Gallery Tutorials
- The Top Flash Tutorials for Menus
- 7 Great Flash Tutorials
- Adobe Creative Suite 5.5 Now Available
- Critical Flash Vulnerability Heats Up the Web
- More on Nonpersistent Client-Side Remote Sha...
- Nonpersistent Client-Side Remote Shared Obje...
- Using the Decorator Pattern for a Real Web S...
- Using Concrete Decorator Classes
- Delving More Deeply into the Decorator Patte...
- The Decorator Pattern in Action
- A Simple Decorator Pattern Example
- Decorator Pattern

Watch our Tech Videos 
Dev Articles Forums 
 RSS  Articles
 RSS  Forums
 RSS  All Feeds
Write For Us 
Weekly Newsletter
 
Developer Updates  
Free Website Content 
Contact Us 
Site Map 
Privacy Policy 
Support 

Developer Shed Affiliates

 




© 2003-2017 by Developer Shed. All rights reserved. DS Cluster - Follow our Sitemap
Popular Web Development Topics
All Web Development Tutorials