ClassFactory 实例是一个“工厂对象”,Flex 可用其生成其它类的实例,每个实例拥有相同的属性。
构建工厂对象时,指定 generator 类。然后,在工厂对象上设置 properties 属性。Flex 通过调用工厂对象的 newInstance() 方法使用工厂对象生成实例。
newInstance() 方法创建 generator 类的新实例,并在新实例中设置由 properties 指定的属性。如果需要进一步自定义生成的实例,则可以覆盖 newInstance() 方法。
ClassFactory 类实现 IFactory 接口。因此,通过该类,您可以创建可分配到 IFactory 类型属性的对象,如 List 控件的 itemRenderer 属性或 DataGrid 控件的 itemEditor 属性。
例如,假设您编写了一个名为 ProductRenderer 的项目渲染器类,该类包含一个 showProductImage 属性,此属性可以是 true 或 false。如果您希望 List 控件使用此渲染器,并使每个渲染器实例都显示产品图像,则应编写以下代码:
var productRenderer:ClassFactory = new ClassFactory(ProductRenderer);
productRenderer.properties = { showProductImage: true };
myList.itemRenderer = productRenderer;List 控件对 itemRenderer 调用 newInstance() 方法以创建 ProductRenderer 的各实例,并将每个实例的 showProductImage 属性设置为 true。如果希望有一个省略产品图像的不同 List 控件,可以使用 ProductRenderer 类创建另一个 properties 属性设置为 { showProductImage: false } 的 ClassFactory。
使用 properties 属性配置实例的功能非常强大,因为它允许以不同方式使用单个 generator 类。但是,通常创建不需要设置属性的不可配置 generator 类。为此,MXML 允许您使用以下语法:
<list id="myList" itemrenderer="ProductRenderer"></list>
分享到:
相关推荐
### 关于“Retrieving the COM class factory for component with CLSID”问题详解 #### 背景介绍 在使用ASP .NET应用程序操作Excel、Word等Office软件时,有时会在IIS服务器上部署应用过程中遇到错误:...
"ClassFactory.rar"这个压缩包文件包含了一个关于Qt5.12框架下实现的对象创建器,它允许开发者通过类名动态地创建任意对象,虽然目前仅限于QObject派生的类。下面我们将详细讨论这个知识点。 Qt是一个跨平台的C++库...
Creating a Class Factory with C# and .NET.doc
解决Word加载xml时的ClassFactory无法供应请求的类别报错
Retrieving the COM class factory for component with CLSID {0002E55D-0000-0000-C000-000000000046} failed due to the following error: 80040154. 收藏 Description: An unhandled exception occurred during ...
全选" editable="false" sortable="false" draggable="false" width="35" headerRenderer="{new ClassFactory(CheckBoxRenderer)}" itemRenderer="{new ClassFactory(CheckBoxItemRenderer)}"/> Rj_datagird.swc这...
在 ClassFactory 类中,使用了一个静态的 map 成员变量来保存注册的类和对应的创建函数,get_map() 函数用来获取这个 map 的引用,避免了初始化顺序的问题。 工厂模式可以有效地解耦客户端代码和对象创建过程,有助...
public class SimpleFactory { public static Product createProduct(String type) { if ("ProductA".equals(type)) { return new ProductA(); } else if ("ProductB".equals(type)) { return new ProductB(); ...
public class Factory { public static Sample createSample(int type) { if (type == 1) { return new MySample(); } else if (type == 2) { return new HisSample(); } // 其他逻辑... } } ``` 这样,...
public class Factory { public static Sample createSample(int choice) { if (choice == 1) { return new MySample(); } else if (choice == 2) { return new HisSample(); } // 其他逻辑... } } ``` 6. ...
客户端只需调用ClassFactory.GetFactory(string factoryName)方法,传入工厂名称,就能动态创建对应的工厂实例。这样做的好处在于,当需要替换或添加新的工厂时,无需修改代码,只需更新配置文件即可,提高了代码的...
- `ClassFactory.cpp` 和 `ClassFactory.h`:显然与工厂模式相关,可能包含了对象的创建工厂。 - `Event.h` 和 `EventSet.h`:可能定义了事件和事件集的接口,用于实现事件插槽机制。 - `ClassFactory.h`:工厂类的...
public class Factory { public static Product createProduct(String type) { if ("ProductA".equals(type)) { return new ConcreteProductA(); } else if ("ProductB".equals(type)) { return new ...
public class ConcreteFactory1 extends Factory { @Override public Product createProduct() { return new ConcreteProduct1(); } } // 具体工厂2 public class ConcreteFactory2 extends Factory { @...
public class Factory { public static Product createProduct(String type) { if ("type1".equals(type)) { return new ConcreteProduct1(); } else if ("type2".equals(type)) { return new ConcreteProduct2...
public class Factory1 extends AbstractFactory { @Override public AbstractProduct createProduct() { return new Product1(); } } public class Factory2 extends AbstractFactory { @Override public ...
public class Factory { public static Sample creator(int which) { if (which == 1) { return new SampleA(); } else if (which == 2) { return new SampleB(); } // 其他逻辑... } } ``` 在这个例子中,...
2. **使用ClassFactory创建柱状图实例**:ClassFactory是一个工厂类,可以用来动态创建对象。通过它,我们可以传递定制的ColumnChart的配置参数,如width、height、dataProvider等。这样生成的柱状图实例将没有常规...
Retrieving the COM class factory for component with CLSID {10020200-E260-11CF-AE68-00AA004A34D5} failed due to the following error: 80040154. 而客户又不想在这台电脑安装MSSQL,所以我们只需要在没有安装...
class Factory { public: virtual Product* createProduct() = 0; }; // 具体工厂1 class ConcreteFactory1 : public Factory { public: Product* createProduct() override { return new ConcreteProduct1(); ...