【问题标题】:What architecture would be better什么样的架构会更好
【发布时间】: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


【解决方案1】:

根据要求,从 cmets 移至答案

据我了解,您担心必须处理的领域模型贫乏。我建议你先read(有一个指向 Fowler 帖子的链接)。它被认为是一种反模式,但这并不意味着你需要重写你的系统。掌握 DDD 需要几个月/几年的时间,没有人能真正保证这种重新设计的成功结果,尤其是在系统很大的情况下。如果贫血模型适合您,请坚持下去。如果没有,请开始使用 DDD。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-27
    • 2015-04-29
    • 2010-11-25
    • 2019-10-10
    • 1970-01-01
    • 1970-01-01
    • 2010-10-06
    相关资源
    最近更新 更多