我有一份Head First Design Patterns的副本,我在那里阅读了一些模式。现在,域驱动设计是传统设计模式的替代品还是以它为基础?如果是后者,在尝试学习域驱动设计之前,我是否需要成为设计模式专家? DDD的推荐路径是什么?
答案 0 :(得分:5)
我读了蓝皮书[Evans],红皮书[Vernon],偶尔会在StackOverflow上弹出这个标签。
埃文斯的书在某些方面非常高,涵盖的不仅仅是代码。 Vernon的书一次性涵盖DDD的构建块,使用虚构的软件产品中的示例作为示例:
Domain-driven Design: Tackling Complexity in the Heart of Software
Implementing Domain-Driven Design
还有视频:
Eric Evans: What I've learned about DDD since the book
对于设计模式,DDD材料指的是许多设计模式。一些现有的设计模式与DDD配合得很好。你可以在遇到它们时选择它们,你不一定需要提前知道它们。在学习设计模式时要避免的一件事是不试图强制使用它们,它们有它们的用途,但是你看到许多开发人员试图在不需要的地方强制使用新学到的设计模式。
答案 1 :(得分:2)
做吧。不要让任何先入为主的情况阻止你开始练习它。
答案 2 :(得分:1)
这是一个迟到的答案,但我想说的是,模式不是一些一刀切的最终解决方案。如果您愿意,它们是通用问题的通用方法,指南。
在DDD中,您可以针对特定问题提供特定解决方案。如果您能够识别实现中的模式,您将获得更深入,更有条理的理解。如果您可以看到需要某些模式的问题,您将有可能的方法来解决它。但要注意,仅通过模式查看问题可能会导致次优解决方案。
了解和理解模式将帮助您以更有效的方式向其他开发人员传达有关实现细节的知识。 喜欢"这是工作单位"而不是"该对象保存对我们在此事务中处理的对象的引用并跟踪它们的状态,以便我们可以立即提交所有更改"。
除此之外,了解并遵循SOLID和DDD原则来构建成功的域模型更为重要。