I never really understood how making an anonymous object and it's properties
into a dynamic class suddenly made it object oriented. Singleton especially
seems to be a vice for that type of thing.

The reason you would abstract the FlashVars is to 1) avoid naming conflicts
and 2) to make changes as easy as possible -- all in one place. With the
dynamic Singleton if the naming of the specific FlashVars change you still
have to search through all of your code and update those references. If,
however, your main Application class (specific to your app) should take
those variables and store them by some application-specific name, you now
have a single place for all of your classes to access and one place to make
changes should a backend developer decide mid-project to mix things up.
Singleton or any class are instantly useless as soon as they perform exactly
as an anonymous object (usually involving dynamic and resolve). I agree that
FlashVars should be limited to receiving config information only at which
point an application can gather further information if needed.

It needs to make sense, not just seem more correct. OOP is a tool for change
and reuse of code. It was never meant to be something for blind faith.

The suggestions I have for your current class:
1) create a hash table coded to the specific FlashVar class for your
particular app. It should have the FlashVar name as well as a reserved name
given for application use. These can be the same, but if the FlashVar name
were to change it could be updated here and the application would continue
using the value by the app name.

ex.
var hashVars =
{
   fv_url:"baseURL",
   fv_uid:"userID"
}

2) (what you've got with naming convention is really good, good standard to
have, so this is just an alternative, not a better way) have the class
initiate from a static constructor (so it will happen before frame1 and
before everything really gets going). At this point you can scrub _level0
for each var in your hash table (everything that isn't a MovieClip,
TextField, Button, or the $version property will be a FlashVars). You can
then store them and delete them from _level0 promptly. This will help your
class not be dependant on an arbritrary naming convention.

Tyler


On 6/6/06, Morten Barklund <[EMAIL PROTECTED]> wrote:

Hi Steve,

> 1. Use static methods/properties instead of singleton. Gets rid of
> '.getInstance().' cruft.

Well. In this case I prefer it used as a singleton - don't know why
really, but it just seems more correct to me.

> 2. Remove the setVar() method since these properties really should be
> read only. Move this into your settings class if you need it.

But it's private anyways. Is made to be used by subclasses.

> 3. Use composition in the SomeSettingsClass class rather than
> inheritance since this isn't an 'is a' relationship.

That would require more code, and the ability to overturn dynamicness
through inheritance makes this seem preferable to me.

And I actually find the relationship as being an "is a" - as the
settingsclass would be used only for FlashVars-variables. Other settings
(read from XML and more) could of course be read in as well, in which
case composition would be preferable.

But I do follow your concerns on all three matters.

> It's also worth noting that the Flex 2 framework has a nice method of
> abstracting FlashVars via the Application.application.parameters array.

Those will be the days... :)

--
Morten Barklund
_______________________________________________
Flashcoders@chattyfig.figleaf.com
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com

_______________________________________________
Flashcoders@chattyfig.figleaf.com
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com

Reply via email to