斑斓

张逸的技术分享
140 篇文章
43 人订阅

全部文章

张逸

职责驱动设计以及状态模式的变化

针对某通信产品,我们需要开发一个版本升级管理系统。该系统需要通过由Java开发的管理后台,由Telnet发起向前端基站设备的命令,以获取基站设备的版本信息,并在...

703
张逸

领域驱动战略设计暨微服务设计工作坊

在2018年第二届领域驱动设计中国峰会,我作为讲师做了一个领域驱动战略设计工作坊——再现具有实操价值的架构方案。在这个工作坊中,我将敏捷实践中的Inceptio...

1173
张逸

深入分析软件复杂度

Eric Evans的经典著作《领域驱动设计》的副标题为“软件核心复杂性应对之道”,这说明了Eric对领域驱动设计的定位就是应对软件开发的复杂度。Eric甚至认...

742
张逸

阅读开源框架,总结Java类的定义

即使我们明白Java的类,也未必清楚该如何正确地定义一个Java类。阅读一些开源框架的源代码,会启发我们灵感,并给出好代码的规范,提炼设计原则与模式。

983
张逸

领域模型在交流中扮演的角色

问题:我对于领域模型如何表示始终还不太明白。按照Evans书里的说法,代码应当是领域模型的主要部分,文档、图表作为补充。另外一方面,领域模型应当是所有参与者都能...

723
张逸

一个完整的TDD演练案例(三)

之所以将“验证输入是否合法”放在第三个任务,是因为它不属于happy path的范畴。它属于辅助业务,重要性相对次之。

825
张逸

领域驱动设计概览

领域驱动设计(Domain Driven Design,DDD)是由Eric Evans最早提出的综合软件系统分析和设计的面向对象建模方法,如今已经发展为一种针...

823
张逸

领域驱动设计中的架构要素

多数时候,领域驱动设计的分层架构并不能清晰表达各模块之间的依赖关系,以及这些模块在分层架构中所处的位置。因为我倾向于将Uncle Bob的Clean Archi...

2654
张逸

利用聚合概念指导MongoDB的Schema设计

在我们的项目中,为了能够保存分析报表以及用户设置的报表查询条件,我们将这些信息视为报表元数据存储在MongoDB中。要存储的元数据包括:

832
张逸

一文讲清楚什么是行为驱动开发

行为驱动开发(Behavior-Driven Development, BDD)的概念来自于测试驱动开发,强调使用DSL(Domain Specific Lan...

952
张逸

迪米特法则与重构

在面向对象设计的世界里,有一个寻常却又常常为人所忽略的原则——“迪米特(Law of Demeter)”法则。这个原则认为,任何一个对象或者方法,它应该只能调用...

926
张逸

教会你何时定义领域服务

若遵循基于面向对象设计范式的领域驱动设计,并用以应对纷繁复杂的业务逻辑,则强调领域模型的充血设计模型已成为社区不争事实。我将Eric提及的战术设计要素如Enti...

963
张逸

基于Spring Cloud的微服务落地

微服务架构模式的核心在于如何识别服务的边界,设计出合理的微服务。但如果要将微服务架构运用到生产项目上,并且能够发挥该架构模式的重要作用,则需要微服务框架的支持。...

1085
张逸

透过文学经典理解软件设计的抽象思想

博尔赫斯(Jorge Luis Borges)有一篇奇文,曰《博闻强记的富内斯》,以纪实手法杜撰了一个具有非凡记忆能力的传奇人物富内斯。博尔赫斯自云:“(《博闻...

1085
张逸

主题数据区的设计

关于主题数据区的设计,首先需要明确的是按照什么对数据进行归类。大的原则,当然还是按照业务来分类,但是分类的出发点不同,划分的类别也不相同。例如针对机场数据,可以...

863
张逸

面向接口设计与角色接口

问题:在做项目的时候,是不是所有包含非静态方法的类,都要写一个接口?是因为这样的目的是为了解耦,然后通过DI注入实现吗?

751
张逸

Scala实现DSL的框架案例

在skinny.validator框架中,提供如下的一种DSL调用方式来验证Map的值:

864
张逸

一个完整的TDD演练案例(一)

实现猜数字的游戏。游戏有四个格子,每个格子有一个0到9的数字,任意两个格子的数字都不一样。你有6次猜测的机会,如果猜对则获胜,否则失败。每次猜测时需依序输入4个...

1343
张逸

一个完整的TDD演练案例(二)

在编写第二个测试时,由于测试样本与之前的测试完全不一样,之前的简单实现就不能满足新增的测试了。事实上,测试就是要去验证实现逻辑,这其中最重要的测试目标就是分支。...

1112
张逸

面向流的设计思想

作者 | 张逸 特别说明:本文包含大量代码片段,若要获得更好阅读观感,请点击文末“阅读原文”或访问我的博客。 响应式编程(Reactive Programmin...

3393

扫码关注云+社区