戏说领域驱动设计(十二):服务模式有哪些创新应用?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2985个文字,预计阅读时间需要12分钟。
上一章讲解了软件设计中的三个主要设计模式,本节讲解三个服务。等我们这次讲完,最后进行一次归纳,即:系统开发流程中的三种模式、软件设计中的三种模式以及三个服务。
上一章讲解了软件设计中主要用到的三个设计模型,本节讲解三个服务。等咱们这次都讲完了再最后进行一次归纳,即:系统开发流程中的三模型、软件设计中的三模型和三个服务,我习惯管这个叫3*3*3。看完了您就会知道我为什么常说软件设计这活是朴素的,没那么多弯弯绕,只是因为我们在学习过程中没有做思考和归纳。设计模式的那四个哥们儿不也是根据其经验总结出了流传至今且经久不衰的23个模式(其实常用的也没几个)以及6个原则。这里还是要再多说两句,23个设计模式其实属于代码设计阶段,应该是每个软件工程师必须掌握的一门技术。但,如果是初学者千万别刻意在产品中去用,强拧的瓜不甜,用完了搞不好还被领导骂你傻缺。我个人写代码时间久了,所以遇到一些典型的场景会直接使用某个模式,非典型的一般是在重构时决定是否有合适的模式供使用。另外,还有一些企业级软件的设计模式也需要去学习的,比如:熔断器、IoC、工作单元等。
书归正传,一提到“服务”,您肯定会想:这简单啊,一个类里面没有字段只有方法就可以称其为服务。这样的定义太大且模糊,我们既然要学习设计就把这个东西整细了。也就是要总结一下到底有哪些服务,每个服务的作用是什么,应用于什么场景,这才叫系统化学习。首先一点,服务的定义说白了的确就是“只有方法没有字段的类”,这是使用服务的一种常用模式。也还有一些特别的,比如计数器服务类里面可能有“AtomicLong”类型的字段标识计数值。一般来说,服务顶好是不要包含字段且单例的,即使加了也尽量从技术角度做好并发访问控制;第二,好的服务每个接口都可以提供一个完整的功能;第三,服务主要是用于提供特定的功能,其代码一般是以面向过程为主。
上面对服务进行了一个白话版的定义,精确度略显不足,不过本系列文章也不是站在高大上的角度来教化读者的。谈完了定义再说说服务的类型,软件设计过程中主要包含三类服务:领域服务、应用服务和数据服务,具体如下图所示。
本文共计2985个文字,预计阅读时间需要12分钟。
上一章讲解了软件设计中的三个主要设计模式,本节讲解三个服务。等我们这次讲完,最后进行一次归纳,即:系统开发流程中的三种模式、软件设计中的三种模式以及三个服务。
上一章讲解了软件设计中主要用到的三个设计模型,本节讲解三个服务。等咱们这次都讲完了再最后进行一次归纳,即:系统开发流程中的三模型、软件设计中的三模型和三个服务,我习惯管这个叫3*3*3。看完了您就会知道我为什么常说软件设计这活是朴素的,没那么多弯弯绕,只是因为我们在学习过程中没有做思考和归纳。设计模式的那四个哥们儿不也是根据其经验总结出了流传至今且经久不衰的23个模式(其实常用的也没几个)以及6个原则。这里还是要再多说两句,23个设计模式其实属于代码设计阶段,应该是每个软件工程师必须掌握的一门技术。但,如果是初学者千万别刻意在产品中去用,强拧的瓜不甜,用完了搞不好还被领导骂你傻缺。我个人写代码时间久了,所以遇到一些典型的场景会直接使用某个模式,非典型的一般是在重构时决定是否有合适的模式供使用。另外,还有一些企业级软件的设计模式也需要去学习的,比如:熔断器、IoC、工作单元等。
书归正传,一提到“服务”,您肯定会想:这简单啊,一个类里面没有字段只有方法就可以称其为服务。这样的定义太大且模糊,我们既然要学习设计就把这个东西整细了。也就是要总结一下到底有哪些服务,每个服务的作用是什么,应用于什么场景,这才叫系统化学习。首先一点,服务的定义说白了的确就是“只有方法没有字段的类”,这是使用服务的一种常用模式。也还有一些特别的,比如计数器服务类里面可能有“AtomicLong”类型的字段标识计数值。一般来说,服务顶好是不要包含字段且单例的,即使加了也尽量从技术角度做好并发访问控制;第二,好的服务每个接口都可以提供一个完整的功能;第三,服务主要是用于提供特定的功能,其代码一般是以面向过程为主。
上面对服务进行了一个白话版的定义,精确度略显不足,不过本系列文章也不是站在高大上的角度来教化读者的。谈完了定义再说说服务的类型,软件设计过程中主要包含三类服务:领域服务、应用服务和数据服务,具体如下图所示。

