首页 文章

C中的对象初始化和对象工厂

提问于
浏览
5

我对c开发和设计都很陌生,因此我在问题上提前道歉是模糊或结构不合理 . 我的代码中有几个不同且不相关的层次结构,我想使用Alexandrescu描述和实现的通用工厂来实例化这些层次结构中的对象 .
我遇到困难的部分是初始化阶段 . 这些类具有非常不同的初始化需求 . 有时,可以从存储(DB)中查找初始化所需的数据,在这种情况下,我可以将初始化过程封装在特定类的某些Init()方法中 . 但有时,数据只在本地知道实例化的时刻,需要手动传递给对象 . 我正在努力想出一个统一的方法来做到这一点 . 有没有人对接近这类问题有任何意见?谢谢

2 回答

  • 4

    你正在超越工程高速公路......先行 .

    工厂很少需要,没有两个工厂是相似的(正如你所注意到的) .

    尝试为所有工厂提供基类是没用的,因为这个基类没有明确的语义 . 它构建了什么? Bird s? Car s?他们是无关的...... Object s?这不是Java!

    如果您希望使用工厂(出于某种原因),那么 Factory 应该生成 1 种类的对象,所有这些对象都来自公共基类 . 如果你有几种物体,那么你需要几种工厂 .

    如果您发现Factory代码重复,请使用模板提升公共代码 .

  • 0

    如果我猜对了,你的问题是你不知道如何将不同的参数集传递给你的工厂方法 . 如果是这样,我可以建议你创建一个更多层次结构/让我们称之为FactoryHelper . 此层次结构的具体类将包含用于实例化具体类的特定数据,例如,ConcretePelctA for ConcreteProductA将包含字符串,而FactoryBelperB for ProductB将包含int . 工厂的抽象方法必须接受抽象基类 - FactoryHelper作为参数 . 您工厂的具体方法会将此参数强制转换为具体的FactoryHelperA或FactoryHelperB,并获取specefic数据以实现specefic产品的实例化

    但它不是很好的设计 . 我想你试图以错误的方式使用工厂方法 .

相关问题