`

<<Domain Driven Design >> by Evan summary

阅读更多

Before chapter 1, it introduced the main Content of the book.

1. Domain model provides a ubquitous language that ties domain experts and technologiests together.

2. Domain modeling and implementation should not be seperated and should belong together. Domain models aren't first modeled and then implemented, but evloved over time.

3. Domain design is closely related to the agile development process. Iterative development(XP,...); close relationship between developers and domain experts. DDD and agile reinforce each other.

4. The heart of software is its ability to solve domain related problems for its user. But some talented developers tend to pay more attention to the technologies used than the domain problem. They should deal with the complexity of the domain with high priority.

Part I

Chapter 1

It use the PCB chip net example to illustrate how a model help to crunching knowledge between developers and domain experts.  Also introduced the cargo voyage example.

Chapter 2

It says we need a ubiquitous language to communicate between software developers and domain experts. This language can pervade every medium of communication.

Chapter 3 Binding Model and Implementation

1. Model-Driven Design demands a model that works well both for analysis and design.

2. Development is an iterative process of refining model, the design, and the code as a single activity.

3. Overseperation of responsibility for analysis, modeling, design, and programming interferes with Model Driven Design, althrough it does not mean that team members can not have specialized roles.

4. Large projects still need technical leaders who coordinate high level design and modeling and help work out the most difficult or most critical decisions.

Part II

The navigation map diagram

Chapter 4 Isolating the Domain

1. Layered Architecture: User Interface, Application, Domain, Infrastructure

2. Online Banking into layers example. (Not focused on the design of the isolated domain layer yet)

3. Relating the layers. Upper layers call public interfaces of lower levels directly. Communite upwards by callbacks or OBSERVERs. Connecting UI, application, domain by MVC like pattern. Infrastructure is offered as SERVICES.

4. Architectural Frameworks. Help to solve technical problems and let domain developer to concentrate on expressing a model. Choose frameworks only when it is necessary or only use the necessary parts in it.

5. The Domain Layer is where the model lives. Isolating the domain implementation is a prerequisite for domain-driven-design.

6. Smart UI "Anti-Pattern". DDD's learning curve is difficult. It is supposed to be used for complex project with necessary experts.

Chapter 5 A Model Expressed in Software

1. Associations: pretty much the same with OOA and OOD

2. Entities are not fundamentally defined by their attributes, but rather by a thread of continuity and identity.

3. Value Objects have no conceptual identity. They describe some characteristic of a thing.

4. Services are operations or actions that do not conceptually belong to any object.

5. Services and the Isolated Domain Layers: Application services(send message service), Domain Services(Funds Transfer service).

6. Modules.  Using packaging to separate the domain layer from other code. Otherwise, leave  the domain developers to package the domain objects in ways that support their model and design choices.

7. Modeling Paradigms. The dominant paradigm is object oriented design. But a domain model does not have to be an object model. There are DDD implemented in Prolog, with a model made up of logical rules and facts.

Chapter 6 The life Cycle of a Domain Object

The diagram about the lifecycle.

Three patterns.

1. Aggregates

----An aggregates is a cluster of associated objects that we treat as a unit for the purpose of data changes. Each aggreate has a root and a boundary.

----A set of rules about aggregates: Root entity has global id and responsible for checking invariants; Entities inside an aggregates has local identities. Reference constraints;  Only root can be obtained directly from db. Inside reference to outside aggregate root. Deletion. Invariants satisfied while change is committed.

----Purchase Order Integrity example.

2. Factories

----Responsible for creation of domain objects: Entities, Value objects,

----Each creation object is atomic and enforces all invariants of created object or aggregate.

----Creation Patterns.

----Factory method in the aggregate root VS standalone factory for aggregate.

----Constructor VS Factory.

----Reconstituting stored object.

3. Repositories

----Encapsulating data persistence. Let the client talk to a simple, intention-revealing interface, and ask for what it needs in terms of the model.

----Provides Repositories only for aggregate roots that actually need direct access.

----Client Code ignores repository implementation; developers do not

----Repositories VS Factories: The factory make new objects, the repository finds old objects

 

... ...

Part IV

 

 

Chapter 14 

Relationships between bounded contexts
1. Shared Kernel
Problem:
Uncoordinated teams working on closely related applications. What they produce may not fit together
Solution:
Designate some subset of the domain model that the two teams to share.  Shared kernel can include domain model, database design, or even code. Integrate the functional system frequently, but not as often as CI.

2. Customer/Supplier
Problem:
One subsystem feeds another. All dependency goes one way.
Solution:
Representatives of the downstream team play customer role.
Jointly develop automated acceptance tests.

3. Conformist
Problem:
Upstream has no motivation to provide the downstream team's needs, the downstream team is helpless.
Solution:
Abandon the use of the upstream.
Slavishly adhering to the model of the upstream team.

4. Anticorruption Layer
Problem:
New systems have to be integrated with legacy or other systems. The difficulty can eventually overwhelm the intent of the new model.
Solution:
Create an isolating layer. It translates conceptual objects and actions from one model and protocol to another.

5. Separate Ways
Problem:
Integration is always expensive. Sometimes the benefit is small.
Solution:
Why bother? Let them evolve in their own ways.
Anyway, the features can sitll be organized in middleware or the UI layer.

6. Open Host Service
Problem:
A subsystem has to be integrated with many others. There is more and more to maintain, and more and more to worry about.
Solution:
Define a set of SERVICES that give access to your subsystem. Enhance and expand these services to handle new integration requirements.

 

 

分享到:
评论
1 楼 nanfang 2011-11-23  
啥子,不能搞点中文

相关推荐

    拦截器与冲突解决

    - **排除默认拦截器**:如果`&lt;mvc:annotation-driven /&gt;`包含默认拦截器,可以考虑使用`&lt;mvc:default-servlet-handler&gt;`或`&lt;mvc:annotation-driven enable-matrix-variables="false" /&gt;`来禁用它们。 - **调整拦截器...

    (代码)SpringMVC第12讲:<mvc:annotation-driven/>

    首先,`&lt;mvc:annotation-driven/&gt;`的作用是自动配置Spring MVC,启用对处理方法注解的支持,如`@RequestMapping`、`@RequestParam`、`@ModelAttribute`等。通过这个元素,我们可以避免编写大量的XML配置,转而采用...

    Domain driven design-quickly

    文件信息中包含了标题“Domain driven design-quickly”,描述“a quick guide on domain driven design”,以及标签“domain driven design”,同时提供的内容片段显示了一些重复和断断续续的文字。现在,我将基于...

    Implementing Domain Driven Design

    With Implementing Domain-Driven Design, Vaughn has made an important contribution not only to the literature of the Domain-Driven Design community, but also to the literature of the broader enterprise...

    Domain Driven Design

    3. 模型驱动设计(Model-Driven Design):这是一种以领域模型为核心的开发方法,它要求软件系统的设计和实现应该反映出模型的结构和意图。 4. 模型与实现的绑定:本书探讨了如何在设计和实现之间建立清晰的映射...

    domain driven design distilled

    根据给定文件的内容,可以提炼出以下IT知识点了: 1. EPUB格式:EPUB是开放的电子书行业标准格式,它支持电子书的多种特性,然而EPUB格式在不同的阅读设备和应用程序上的支持度不一,设备或应用程序的设置可以用来...

    Domain-Driven Design (Tackling Complexity in the Heart of Software

    领域驱动设计(Domain-Driven Design,简称DDD)是一种软件开发的方法论,它由Eric Evans在其2004年的同名书籍《领域驱动设计:软件核心复杂性应对之道》中提出。DDD的核心思想是,软件系统的复杂性不仅仅是由技术...

    Applying Domain Driven Design and Patterns

    《应用领域驱动设计与模式》(Applying Domain-Driven Design and Patterns)是一本针对.NET平台开发人员的专业书籍,作者是Jimmy Nilsson。该书出版于2006年5月8日,由Addison Wesley Professional出版社出版。全书...

    Domain Driven Design with Spring Boot

    Domain Driven Design with Spring Boot epub version

    SpringMVC中解决@ResponseBody注解返回中文乱码问题

    除了上述方法,还可以在`&lt;mvc:annotation-driven&gt;`元素内部使用`&lt;mvc:message-converters&gt;`配置自定义的`HttpMessageConverter`,效果与上述配置相同: ```xml &lt;mvc:annotation-driven&gt; &lt;mvc:message-converters&gt; ...

    JavaScript Domain-Driven Design(PACKT,2015)

    JavaScript Domain-Driven Design allows you to leverage your JavaScript skills to create advanced applications. You'll start with learning domain-driven concepts and working with UML diagrams. You'll ...

    Domain Driven Design in PHP.pdf

    Domain-Driven Design in PHP Real examples written in PHP showcasing DDD Architectural Styles, Tactical Design, and Bounded Context Integration

    Domain-Driven Design: Tackling Complexty in the Heart of Software -- 领域驱动设计: 软件核心复杂性应对之道》

    关于DDD可参考InfoQ的Mini Book Domain Driven Design Quickly , 还有 Banq 的文章 实战DDD(Domain-Driven Design领域驱动设计), 和 领域模型驱动设计(DDD)之模型提炼 。 本书分为四部分,第一部分讲述了领域模型...

    Implementing Domain-Driven Design

    Implementing Domain-Driven Design

    Spring3中配置DBCP,C3P0,Proxool,Bonecp数据源

    &lt;mvc:annotation-driven /&gt; &lt;mvc:resources mapping="/resources/**" location="/resources/" /&gt; &lt;mvc:default-servlet-handler /&gt; &lt;aop:config proxy-target-class="true"/&gt; &lt;tx:annotation-driven ...

    Domain-Driven Design

    Domain-DrivenDesign领域驱动设计 With this book in hand, object-oriented developers, system analysts, and designers will have the guidance they need to organize and focus their work, create rich and ...

Global site tag (gtag.js) - Google Analytics