1
我已經編寫了這段代碼來驗證我的業務規則,我想知道這是否是驗證業務對象的最佳解決方案。這樣我可以學習如何爲我的所有項目進行驗證。該解決方案可能存在許多有關軟件設計最佳實踐的嚴重問題。是這種方法驗證業務對象的最佳方法
public interface IRule
{
bool Isvalid();
}
public class CategoryRule : IRule
{
CategoryRepository _category;
string _id, _name, _parent;
public CategoryRule(string id, string name, string parent)
{
_id = id;
_name = name;
_parent = parent;
}
public object IsValid()
{
bool result = this.ValidateId();
if (result)
result = this.ValidateName();
else
{
this.Message = "the id value is not correct.";
return false;
}
if (result)
result = this.ValidateParent();
else
{
this.Message = "the name value is not correct.";
return false;
}
if (result)
return _category;
else
{
this.Message = "the parent value is not correct.";
return false;
}
}
private bool ValidateId()
{
long id;
if (long.TryParse(_id, out id))
return true;
_category.Id = id;
return false;
}
private bool ValidateName()
{
if (!string.IsNullOrWhiteSpace(_name))
return true;
_category.Name = _name;
return false;
}
private bool ValidateParent()
{
long parent;
if (long.TryParse(_parent, out parent))
return true;
_category.Parent = parent;
return false;
}
public string Message
{
get;
private set;
}
}
public class CategoryPresenter
{
View _view;
CategoryRepository _model;
public void AddCategory()
{
CategoryRule rule = new CategoryRule(_view.Id, _view.Name, _view.Parent);
object obj = rule.IsValid();
if (obj.GetType() == typeof(bool))
_view.ShowError(rule.Message);
_model.Add(obj as CategoryRepository);
}
}
我很感激任何關於如何寫這段代碼的建議。
我沒有使用mvc。我用mvp標記了這個問題,但是感謝這些信息。 – jim 2012-04-09 20:02:29
除IRule接口外的其他任何問題? – jim 2012-04-13 08:22:36