如何将不同的参数集添加到工厂方法设计模式以实现正确的设计



>我有一个场景,两个不同的类有许多属性和一个不同的属性。如何使用工厂设计模式或不应该使用它?这些子类的内部私有方法利用这些属性。

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,因为它只需要根据类型设置一次。

实现此目的的最佳方法是什么?

考虑到客户端必须知道输出的类型才能知道要传入的参数,并且这两种类型之间没有可重用的代码,我在这里看不到"泛型"工厂模式的价值。 我要么有两个工厂(如果你甚至需要任一类型的工厂),要么让客户端直接调用类型构造函数。

最新更新