>我有一个场景,两个不同的类有许多属性和一个不同的属性。如何使用工厂设计模式或不应该使用它?这些子类的内部私有方法利用这些属性。
public class RunsValidator
{
//Few common properties
public int DataSegmentID { get; set; }
public int AttributeOffset { get; set; }
}
public class ProductAttributeRunValidator : RunsValidator
{
public ProductAttributeRunValidator(string productNames)
{
this.ProdNames = productNames;
}
}
public class CategoryAttributeRunValidator : RunsValidator
{
public CategoryAttributeRunValidator(int orgIDs) : base()
{
this.totalOrgIDs = orgIDs;
}
}
工厂实施
public class RunAttributeFactory
{
public static RunsValidator GetRunValidator(string type, string productNames, int orgIds)
{
RunsValidator runValidator = null;
if(type == "Product")
{
runValidator = new ProductAttributeRunValidator(productNames);
}
else if (type == "Category")
{
runValidator = new CategoryAttributeRunValidator(orgIds);
}
else
{
runValidator = null;
}
return runValidator;
}
}
在客户端代码中,我可以访问应作为参数(产品名称、orgId 和类型)发送到 Factory 方法的变量。我想在客户端代码中的许多地方访问返回的 runValidator,因为它只需要根据类型设置一次。
实现此目的的最佳方法是什么?
考虑到客户端必须知道输出的类型才能知道要传入的参数,并且这两种类型之间没有可重用的代码,我在这里看不到"泛型"工厂模式的价值。 我要么有两个工厂(如果你甚至需要任一类型的工厂),要么让客户端直接调用类型构造函数。