我想要一些工厂(不管是抽象工厂模式还是工厂方法——看起来第二个是第一个的特定形式。在我的情况下,应该只创建一个对象)。问题是,尽管创造的产品是相似的,但它们取决于一些论据。
如何按照设计模式准备这个架构?
下面的当前方法
public abstract class Product {}
public class MyProduct : Product
{
public bool Abc { get; set; }
}
public class YourProduct : Product {}
public abstract class ProductFactory
{
//in some cases parameter not in use
public abstract Product Create(HelpData additionalData);
}
public class MyProductFactory : ProductFactory
{
public override Product Create(HelpData additionalData)
{
return new MyProduct {Abc = additionalData.SomethingImportantForMyProduct};
}
}
public class YourProductFactory : ProductFactory
{
//unused parameter
public override Product Create(HelpData additionalData)
{
return new YourProduct();
}
}
public class HelpData
{
public bool SomethingImportantForMyProduct { get; set; }
}
编辑
我看不清楚,所以会重复。
通常我不会因为使用模式而使用模式。但这个问题似乎不是边界情况。看起来相当频繁。更进一步,我相信有适合于此的设计模式,但我不确定是哪一个。现在看起来抽象工厂不是正确的选择。