C# 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
(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(); }
}