我发现自己越来越频繁地使用以下设计,我的直觉说这是一种代理,因为我并没有真正添加太多功能。我怀疑它的唯一原因是因为代码往往更像我看到的装饰器示例!
你怎么看?
class Person
{
public string Name { get; set; }
public int Age { get; set; }
public virtual string Address { get; set; }
}
class PersonProxyOrDecarator : Person
{
private Lazy<string> _address;
public PersonProxyOrDecarator(PersonRepository repository)
{
_address = new Lazy<string>(()=> repository.LoadAddress(this));
}
public override string Address
{
get
{
return _address.Value;
}
set { throw new NotImplementedException(); }
}
}
class PersonRepository
{
public IEnumerable<Person> LoadPeople()
{
return new List<Person>(){
new PersonProxyOrDecarator(this){ Name="Test",Age=18 }
};
}
public string LoadAddress(Person person)
{
return "Address loaded from webservice";
}
}
这并不重要,但 person 实体类通常位于不同的程序集(域程序集)中,而 personproxyordecorator 类和存储库将位于程序集存储库中。
谢谢
罗斯