In my previous post about using Swiz in Actionscript projects I demonstrated one way of implementing a BeanProvider
class. This method essentially mimics what Flex does when it compiles an mxml bean provider into actionscript.
This is a somewhat laborious way of doing things, and on bigger projects ends up large and difficult to read. Below is an example of another way to make an actionscript BeanProvider
:
package
{
import org.swizframework.core.Bean;
import org.swizframework.core.BeanProvider;
import org.swizframework.core.Prototype;
public class Beans extends BeanProvider
{
public function Beans(beans:Array=null)
{
beans = createBeans( beans );
super(beans);
}
protected function createBeans( beans:Array ):Array
{
if( !beans )
beans = [];
beans.push( new Bean(
new SomeController(), "someController" ) );
beans.push(
new Bean( new SomeModel(), "someModel" ) );
var prototype:Prototype = new Prototype( SomePresModel );
prototype.singleton = true;
prototype.constructorArguments = ["abc", 123, true ];
beans.push( new Bean( prototype ) );
return beans;
}
}
}
In this example Bean
instances are created and passed instances of our controllers/model or prototypes. An Array
of these beans is then passed onto the superclass' constructor. It's as simple as that.
I have chosen to move the population of the beans array in to a separate protected method to allow greater control to sub classes, but it's by no means a necessary step.