and if each IAnalyzer implements a function called getAnalyzedProperty(),
returning a string, and if each item (using an IItem interface, for example)
implements a function called hasProperty(), receiving a string as parameter?
So, you could check if the item has the "getProperty()" function the
analyzer requires, at runtime, without having runtine errors... You could
also have some getProperty( strProperty:String ):Object function, defined at
IItem interface.

interface IAnalyzer
{
  getAnalyzedProperty():String;
}

interface IItem
{
  hasProperty( strProperty:String ):Boolean;
  getProperty( strProperty:String ):Object;
}


just a guess,
andrei



On Sat, Mar 22, 2008 at 11:39 AM, Jeroen Beckers <[EMAIL PROTECTED]>
wrote:

> Hi list!
>
> Situation: I have a class that analyzes stuff. There are different
> analyzing
> classes, such as "HeightAnalyzer", "WeightAnalyzer", "LevelAnalyzer", etc.
> You can add an analyzer to the class by using
> 'myClass.addAnalyzer(newAnalyzer:IAnalyzer)'.
> As you can see, there is an IAnalyzer interface which all Analyzer's
> implement. Every time you add an analyzer, it is added to the list using
> the
> Decorator pattern. (Every analyzer must analyze a list and pass it to the
> next analyzing test)
>
> Now, the analyzer's analyze certain items. Every analyzer requires the
> analyzed item to have a certain set of methods. The HeightAnalyzer
> requires
> a getHeight(), the LevelAnaylzer requires a getLevel(), etc. I want to
> have
> a different interface for each analyzer, so that I can easily add
> analyzers
> (+interfaces).
>
> If I want to analyze a list of items, those items must implement the
> correct
> interface, according to which analyzers you have added to the class. Fe:
>
> var myClass:AnalyzerBundle = new AnalyzerBundle();
> myClass.addAnalyzer(new HeightAnalyzer());
> myClass.addAnalyzer(new LevelAnalyzer());
> myClass.analyze(new Array(item1, item2, item3));
>
> What I am looking for now, is a way to make sure that item1, item2 and
> item3
> all implement the IHeightItem and ILevelItem interfaces.
>
> I've found a couple of ways to do this, but none of them seemed really
> good
> to me. One of them was to have every Analyzer keep track of the interface
> associated with it, and check if they implement the correct interface,
> once
> the analyzer is called. But this would give ugly runtime errors...
> I'm pretty sure that it can't be done at compile time, but if anyone
> happens
> to know some way (hack), or a better way for the runtime errors, please
> tell
> me :-). All ideas are welcome
>
> Ps: I've just made up all these names, my question is about the technique
> to
> be used, not about the project :)
> _______________________________________________
> Flashcoders mailing list
> Flashcoders@chattyfig.figleaf.com
> http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
>
_______________________________________________
Flashcoders mailing list
Flashcoders@chattyfig.figleaf.com
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Reply via email to