领域驱动设计案例之业务实现1

业务上主要实现产品的创建,客户的创建、下订单的业务,这里主要演示领域驱动设计的思想与一些最佳实践如何体现到领域的实现中,代码中的一些

Bug或瑕疵不用太过理会。

在DDD.Doman项目中实现相应的聚合根、实体与值对象。

这篇文章主要实现客户的创建,因为通过Model-First已经建立了领域模型,所以我们建立分部类来实现领域对象的业务逻辑部分。

public partial class Customer:AggreateRoot
    {
        private IRepository<Customer> irepository;
        public Customer(IRepository<Customer> irepository)
        {
            this.irepository = irepository;
        }
        public void CreateCustomer(string name,string mobile,string state,string city,
            string street)
        {
            Customer customer = new Customer();
            customer.Id = base.Id;
            customer.Name = name;
            customer.Mobile = mobile;
            addcustomeraddress(customer, state, city, street);
            irepository.Create(customer);
        }

        private void addcustomeraddress(Customer customer,string state,string city,string street)
        {
            var address = new Address(state, city, street);
            customer.Address.Add(address);
        }

        public void AddCustomerOtherAddress(Customer customer,string state,string city,
            string street)
        {
            addcustomeraddress(customer, state, city, street);
            irepository.Update(customer);
        }

        public Customer GetCustomerByName(string name)
        {
            return irepository.GetByCondition(p => p.Name == name).FirstOrDefault();
        }
    }
 public partial class Address:ValueObject
    {
        public Address(string state,string city,string street)
        {
            this.Id = base.Id;
            this.State = state;
            this.City = city;
            this.Street = street;
        }
    }
时间: 2024-10-21 00:38:45

领域驱动设计案例之业务实现1的相关文章

领域驱动设计案例之领域层框架搭建

根据前面对领域驱动设计概念以及一些最佳实践的理解,领域模型是系统最核心的部分,我们还是采用前面销售订单的例子,这个案例系统的核心构建就从领域层开始.领域层框架搭建主要完成两个任务: 1.领域模型的建立,聚合与聚合根的确定,关系的确定. 2.建立支持DDD理论的领域层接口. 这里先上代码图,再详细讲每个部分的主要功能: 1.Model中主要确定了领域对象,聚合与聚合根,关联关系等,我们这里采用的是EF 的Model First建模,你也可以采取Code First.如下图: 2.Aggreate中

领域驱动设计案例之领域层实体与聚合根实现

在领域层中,可以实现实体与聚合根的业务逻辑,在实现业务逻辑之前,我们首先要确定实体和聚合根的一些基本行为,比如判断实体是否相等.关于领域对象的具体业务逻辑实现,因为涉及到要与数据库交互,所以等看完仓储的实现后,再实现领域对象的业务逻辑. using System; using Order.Domain.Aggreate; namespace Order.Domain.Model { public abstract class Entity : IEntity { private Guid id

领域驱动设计案例之仓储顶层实现

在业务中,我们会涉及到对象的创建.重建.更新.销毁等操作,这些操作通常需要持久化到数据库中,我们通过仓储来实现对数据的访问 1.首先我们要实现仓储上下文,仓储上下文主要是维护一些创建.更新.销毁的对象列表,未来可以实现批量持久化,从而保持多实体与多聚合的事务,从而实现内部一致性和外部一致性: using Order.Domain.Aggreate; using Order.Domain.Repository; using System; using System.Collections.Gene

领域驱动设计系列文章汇总

Entity Framework之领域驱动设计实践 EntityFramework之领域驱动设计实践 - 前言 EntityFramework之领域驱动设计实践 (一):从DataTable到EntityObject EntityFramework之领域驱动设计实践 (二):分层架构 EntityFramework之领域驱动设计实践 (三):案例:一个简易的销售系统 EntityFramework之领域驱动设计实践 (四):存储过程 - 领域驱动的反模式 EntityFramework之领域驱动

【系统架构理论】一篇文章搞掂:领域驱动设计

一.什么是领域驱动设计 1.1.面向业务的设计 当我们需要构建一个业务复杂的系统,我们不仅要从技术角度去构建一个稳健的系统,还要从业务角度出发,保证系统能满足业务需求. 架构设计的考虑点:不仅面向技术,更应该面向业务:面对不同的业务复杂度,选择的架构可能不同. 架构师的工作:面对复杂的业务逻辑,需要整合业务和技术才能很好地解决.业务架构驱动技术架构. 一个典型开发团队:新手.中级开发者.高级开发者/架构师(技术架构).领域专家/产品经理(业务架构).项目经理 要解决的问题:将复杂的业务架构梳理好

我眼中的领域驱动设计

有幸参与了一些领域驱动的项目,读了一些文章,也见识了一些不伦不类的架构,感觉对领域驱动有了更进一步的认识.所以今天跟大伙探讨一下领域驱动设计,同时也对一些想要实践领域驱动设计却又无处下手,或者一些正在实践却又说不上领域驱动设计到底好在哪的朋友一些建议.当然对于领域驱动设计这个主题而言从来不乏争论,所以大家可以在畅所欲言. 为什么要使用领域驱动设计? 从Eric Evans写的<领域驱动设计:软件核心复杂性应对之道>一书的书名就可以看出这一方法论是为了解决软件核心复杂性的.也就是说软件业务越来越

【DDD】领域驱动设计实践 —— Application层实现

本文是DDD框架实现讲解的第二篇,主要介绍了DDD的Application层的实现,详细讲解了service.assemble的职责和实现.文末附有github地址.相比于<领域驱动设计>原书中的航运系统例子,社交服务系统的业务场景对于大家更加熟悉,相信更好理解.本文是[DDD]系列文章的其中一篇,其他可参考:使用领域驱动设计思想实现业务系统 Application层 在DDD设计思想中,Application层主要职责为组装domain层各个组件及基础设施层的公共组件,完成具体的业务服务.A

领域驱动设计的必要性和模型标准——《领域驱动设计-精简版》

一.领域驱动设计 领域驱动设计早在30年前就已经为人所知,一些设计人员开始开始领域建模,领域通用语言的思维构造,以便能够在领域专家和开发专家形成高效的沟通,Eric Evans将这种思维(思潮)定义为Domain-Driven Desigin(领域驱动设计,简称DDD).DDD在B/S还不这么流行的年代,主要应用在软件公司,因为很多都是C端,但是现在各个互联网公司将很多业务尝试模块化.量级上规模化,业务上多样化,不再是CRUD这么简单,因此,领域驱动设计在互联网开发中也起到了一个很好的引领作用.

【DDD】领域驱动设计实践 —— 框架实现

目录 1. 框架实现图 2. 框架详述 3. 模块结构 正文 本文主要介绍了基于SpringMVC+mybatis对DDD思想的落地实现框架.本文为[DDD]系列文章中的其中一篇,其他内容可参考:使用领域驱动设计思想实现业务系统. 回到顶部 1. 框架实现图 该框架实现基本和DDD的指导思想契合,主要分为四层,且将关注点放在了domain层.下面将逐层介绍各个组件的职责. 回到顶部 2. 框架详述 User Interface层 门面层,对外以各种协议提供服务,该层需要明确定义支持的服务协议.契