【发布时间】:2012-09-05 21:13:44
【问题描述】:
我希望能够收集多个验证实体,它们都共享相同的界面。这是我想出的:
public interface Ivalidateable
{
bool IsValid(IValidateParam param);
}
public interface IValidateParam
{
}
public abstract EmployeeStrategy: Ivalidateable
{
public abstract bool IsValid(User user);
}
public abstract SpreadStrategy: IValidateable
{
public abstract bool IsAvlid(Campaign campaign);
}
public class User: IValidateParam
{}
public class Campaign: IValidateParam
{}
public EmployeeTypeStragtegy: EmployeeStrategy, IValidateable
{
public bool IsValid(User user)
{
if (new[]{'e',a','b}.Contains(user.userId.first().toString()))
return true;
return false;
}
}
public TrailSpreadStrategy: SpreadStrategy, IValidateable
{
public bool IsValid(Campaign campaign)
{
//logic goes here
}
}
public EvenpreadStrategy: SpreadStrategy:, IValidateable
{
public bool IsValid(Campaign campaign)
{
//logic goes here
}
}
public class ValidationFactory
{
private static List<IValidateable> stragtegies;
static ValidationFactory
{
strategies = new List<IValidateable>();
strategies.Add(new EmployeeTypeStragtegy());
strategies.Add(new TrailSpreadStrategy());
}
public bool IsValid(//Need to pass User/Campaign)
{
//what do I do here?
}
}
传递 User / Campaign 以便我可以循环策略并检查 IsValid 的最佳方法是什么?
【问题讨论】:
-
您有两种验证广告系列的策略,都将被执行还是有一些标准可以选择正确的?
-
每种类型(用户/广告系列)只有一种...我只是想展示声明多个类型的想法
标签: c# asp.net-mvc validation design-patterns strategy-pattern