C# c语言中的产品交易者模式#

C# c语言中的产品交易者模式#,c#,design-patterns,C#,Design Patterns,是一篇详细介绍“产品交易者模式”的论文 有没有人可以分享一些经验?链接到一些示例代码 我特别希望看到一些C语言的实现示例 有两个问题让我困惑: (1) 产品的创造。有人能把论文(下面)中的示例代码翻译成c吗 (2) 规范类是否与Evans和Fowler提倡的规范模式相同 干杯, 贝里尔 模板 类创建者 { 公众: 创建者(SpecType aSpec):\u aSpecification(aSpec){ SpecType getSpecification(){return\u aSpecific

是一篇详细介绍“产品交易者模式”的论文

有没有人可以分享一些经验?链接到一些示例代码

我特别希望看到一些C语言的实现示例

有两个问题让我困惑:
(1) 产品的创造。有人能把论文(下面)中的示例代码翻译成c吗 (2) 规范类是否与Evans和Fowler提倡的规范模式相同

干杯,
贝里尔

模板
类创建者
{
公众:
创建者(SpecType aSpec):\u aSpecification(aSpec){
SpecType getSpecification(){return\u aSpecification;}
ProductType*create()=0;
私人:
SpecType\u特殊化;
};
模板
类创建者:公共创建者
{
公众:
具体创建者(spectypeaspec):创建者(aSpec){}
ProductType*create(){返回新的ConcreteProductType;}
}

下面是C#中代码的翻译:

公共抽象类创建者
{
公共创建者(SpecType aSpec){u aSpecification=aSpec;}
public SpecType GetSpecification(){return\u aSpecification;}
公共抽象ProductType Create();
私有SpecType_特殊化;
}
公共类ConcreteCreator:Creator,其中ConcreteProductType:ProductType,new()
{
公共混凝土创建者(SpecType aSpec):基(aSpec){}
公共重写ProductType Create(){返回新的ConcreteProductType();}
}

@Tomas:这就是Berryl要求翻译的原因;-)它看起来像是C++的正则(没有特定的东西)。它是C++,他希望它被翻译成C是,是在后面的论文中引用伊万斯的,同样的想法。我觉得它可能是一个更有趣的类,但是这仍然是有用的。有没有用过这个图案?
template<class ProductType, class SpecType>
class Creator
{
    public:
        Creator(SpecType aSpec) : _aSpecification(aSpec) {}
        SpecType getSpecification() { return _aSpecification; }
        ProductType * create() = 0; 
    private:
        SpecType _aSpecification;
};

template<class ProductType, class ConcreteProductType, class SpecType>
class ConcreteCreator : public Creator<ProductType, SpecType>
{
    public:
        ConcreteCreator(SpecType aSpec) : Creator<ProductType, SpecType>(aSpec) {}
        ProductType * create() { return new ConcreteProductType; }
}
public abstract class Creator<ProductType, SpecType>
{
    public Creator(SpecType aSpec) { _aSpecification = aSpec; }

    public SpecType GetSpecification() { return _aSpecification; }

    public abstract ProductType Create();

    private SpecType _aSpecification;
}

public class ConcreteCreator<ProductType, ConcreteProductType, SpecType> : Creator<ProductType, SpecType> where ConcreteProductType : ProductType, new()
{
    public ConcreteCreator(SpecType aSpec) : base(aSpec) { }

    public override ProductType Create() { return new ConcreteProductType(); }
}