Tag: 领域驱动设计

以下哪些例子代表DDD的正确使用?

我已经和DDD合作了几个月了,我遇到了一些我不确定的事情。 举一个将Product添加到Order对象的简单示例。 从我们的Controller中,我们通过UI传递了一个int ,它表示数据库中的Product 。 以下哪两个例子是正确的(如果它们都错了,请告诉我)? 示例一: public class OrderController { // Injected Repositories private readonly IProductRepository _productRepository; // Called by UI public void AddProduct(int productId) { Order order = …; // Persisted Order Product product = _productRepository.GetProduct(productId); order.AddProduct(product); } } Controller实例化产品本身并通过以下方法添加它: void AddProduct(Product product) { productList.Add(product); } 示例二: public class OrderController { // Injected […]

将域服务实现为存储库的扩展方法

我对域服务的理解是他们执行超出相关存储库边界的任务(CRUD相关任务)。 由于.Net允许扩展方法,为什么不将域服务实现为存储库的扩展方法,从而减少在需要时实例化存储库和服务的需要? 我很感激任何评论。

DDD访问外部信息的方法

我有一个现有的银行应用程序类,如下所示。 银行账户可以是SavingsBankAccount或FixedBankAccount。 有一个名为IssueLumpSumInterest的操作。 对于FixedBankAccount,仅当帐户所有者没有其他帐户时才需要更新余额。 这要求FixedBankAccount对象了解帐户所有者的其他帐户。 如何通过遵循SOLID / DDD / GRASP /信息专家模式来做到这一点? namespace ApplicationServiceForBank { public class BankAccountService { RepositoryLayer.IRepository accountRepository; ApplicationServiceForBank.IBankAccountFactory bankFactory; public BankAccountService(RepositoryLayer.IRepository repo, IBankAccountFactory bankFact) { accountRepository = repo; bankFactory = bankFact; } public void IssueLumpSumInterest(int acccountID) { RepositoryLayer.BankAccount oneOfRepositroyAccounts = accountRepository.FindByID(p => p.BankAccountID == acccountID); int ownerID = (int) oneOfRepositroyAccounts.AccountOwnerID; IEnumerable accountsForUser […]