【发布时间】:2016-06-04 18:42:37
【问题描述】:
您能否在这两个示例中从架构的角度提出更好的建议以及原因。首先,我有一个单独的类,负责与对象相关的业务逻辑,对象没有任何方法,它只是那里的数据。 在第二个示例中,对象知道如何保存自己(使用相同的存储库)和位于内部的所有业务逻辑。
我有一个应用程序实现了第一个,但是处理对象的服务太多,将它重写为第二个示例不是很容易吗?我只是想了解它是否会起作用或给我带来更多问题。
第一:
class Person{
public stirng FirstName {get;set;}
}
class PersonService<Person> : IService<Person>{
ctor (IRepository<Person> repository){
_repository = repository;
}
public void Save(Person p){
// business logic there
_repository.Save(p)
}
}
第二:
class Person{
public stirng FirstName {get;set;}
ctor(IRepository repository){
_repository = repository;
}
public void Save(){
// business logic there
_repository.Save(p)
}
}
【问题讨论】:
-
据我了解,您担心必须处理的贫血域模型。我建议你先阅读stackoverflow.com/questions/258534/…(有一个指向 Fowler 帖子的链接)。它被认为是一种反模式,但这并不意味着你需要重写你的系统。掌握 DDD 需要几个月/几年的时间,没有人能真正保证这种重新设计的成功结果,尤其是在系统很大的情况下。如果贫血模型适合您,请坚持下去。如果没有,请开始使用 DDD。
-
这正是我想要的,谢谢 Alexey。这种模式已经有了名字(反模式)。太糟糕了,无法将您的评论标记为答案。
标签: architecture n-tier-architecture