GODPAPER | All Packages | All Classes | Index | Frames No Frames |
ClassFactory

Package | mx.core
Class | public class ClassFactory
Inheritance | ClassFactory Object
Implements | IFactory

Language Version : | ActionScript 3.0

Product Version : | Flex 3

Runtime Versions : | Flash Player 9, AIR 1.1

A ClassFactory instance is a "factory object" which Flex uses to generate instances of another class, each with identical properties.

You specify a `generator` class when you construct the factory object. Then you set the `properties` property on the factory object. Flex uses the factory object to generate instances by calling the factory object's `newInstance()` method.

The `newInstance()` method creates a new instance of the `generator` class, and sets the properties specified by `properties` in the new instance. If you need to further customize the generated instances, you can override the `newInstance()` method.

The ClassFactory class implements the IFactory interface. Therefore it lets you create objects that can be assigned to properties of type IFactory, such as the `itemRenderer` property of a List control or the `itemEditor` property of a DataGrid control.

For example, suppose you write an item renderer class named ProductRenderer containing a `showProductImage` property which can be `true` or `false`. If you want to make a List control use this renderer, and have each renderer instance display a product image, you would write the following code:

      var productRenderer:ClassFactory = new ClassFactory(ProductRenderer);
      productRenderer.properties = { showProductImage: true };
      myList.itemRenderer = productRenderer;

The List control calls the `newInstance()` method on the `itemRenderer` to create individual instances of ProductRenderer, each with `showProductImage` property set to `true`. If you want a different List control to omit the product images, you use the ProductRenderer class to create another ClassFactory with the `properties` property set to `{ showProductImage: false }`.

Using the `properties` property to configure the instances can be powerful, since it allows a single generator class to be used in different ways. However, it is very common to create non-configurable generator classes which require no properties to be set. For this reason, MXML lets you use the following syntax:

      <mx:List id="myList" itemRenderer="ProductRenderer">

The MXML compiler automatically creates the ClassFactory instance for you.

See also

mx.core.IFactory
mx.controls.List

Public Properties

| Property | Defined By
--- | --- | ---
|  | generator : Class The Class that the newInstance() method uses to generate objects from this factory object. | ClassFactory
|  | properties : Object = null An Object whose name/value pairs specify the properties to be set on each object generated by the newInstance() method. | ClassFactory

Public Methods

| Method | Defined By
--- | --- | ---
|  | ClassFactory(generator:Class = null) Constructor. | ClassFactory
|  | newInstance():* Creates a new instance of the generator class, with the properties specified by properties. | ClassFactory

Property Detail

generator | property

`public var generator:Class`

Language Version : | ActionScript 3.0

Product Version : | Flex 3

Runtime Versions : | Flash Player 9, AIR 1.1

The Class that the `newInstance()` method uses to generate objects from this factory object.

properties | property |

`public var properties:Object = null`

Language Version : | ActionScript 3.0

Product Version : | Flex 3

Runtime Versions : | Flash Player 9, AIR 1.1

An Object whose name/value pairs specify the properties to be set on each object generated by the `newInstance()` method.

For example, if you set `properties` to `{ text: "Hello", width: 100 }`, then every instance of the `generator` class that is generated by calling `newInstance()` will have its `text` set to `"Hello"` and its `width` set to `100`.

The default value is `null`.

Constructor Detail

ClassFactory | () | Constructor

`public function ClassFactory(generator:Class = null)`

Language Version : | ActionScript 3.0

Product Version : | Flex 3

Runtime Versions : | Flash Player 9, AIR 1.1

Constructor.

Parameters

| `generator:Class` (default = `null`)`` — The Class that the `newInstance()` method uses to generate objects from this factory object.

Method Detail

newInstance | () | method

`public function newInstance():*`

Language Version : | ActionScript 3.0

Product Version : | Flex 3

Runtime Versions : | Flash Player 9, AIR 1.1

Creates a new instance of the `generator` class, with the properties specified by `properties`.

This method implements the `newInstance()` method of the IFactory interface.

Returns

| `*` — The new instance that was created.

Thu Jan 16 2014, 01:11 PM +08:00