Preface | p. xv |
Who This Book is For | p. xvi |
How the Book is Organized | p. xvii |
Case Study and Exercises | p. xviii |
Conventions | p. xix |
Further Resources | p. xix |
Tools | p. 1 |
Getting Started | p. 3 |
Understanding Domain-Driven Design | p. 3 |
The Essentials of DDD | p. 4 |
Introducing Naked Objects | p. 8 |
Naked Objects in About Five Minutes | p. 10 |
How Naked Objects Helps with DDD | p. 16 |
The Big Picture | p. 19 |
Identifying the Domain Concepts | p. 23 |
Introducing CarServ | p. 23 |
Getting Ready | p. 25 |
Creating the Domain Classes | p. 27 |
Using Repositories to Locate Objects | p. 31 |
Identifying Objects to the User | p. 35 |
Capturing Simple Business Rules | p. 41 |
Providing Choices for Properties | p. 43 |
Relating Objects Together | p. 47 |
Associating Objects | p. 47 |
Adding Describing Concepts | p. 54 |
Capturing Business Rules for Collections | p. 60 |
Rapid Prototyping | p. 63 |
Fixtures for Setting Up Domain Objects | p. 64 |
Fixtures for Setting Up the Clock | p. 67 |
Fixtures for Setting Up User Sessions | p. 70 |
Organizing Fixtures into Hierarchies | p. 74 |
Creating Behaviorally Complete Objects | p. 79 |
Adding Behavior to Domain Objects | p. 80 |
Validating Action Arguments | p. 82 |
Making Actions Friendlier to Use | p. 85 |
Adding Finders to Repositories | p. 87 |
Implementing Business Rules | p. 91 |
Validation Recap | p. 92 |
Disabling Class Members | p. 95 |
Hiding Class Members | p. 98 |
Declarative Rules and the Object Life Cycle | p. 102 |
Validating the Entire Object | p. 105 |
Using Value Types | p. 109 |
Identifying Value Types | p. 110 |
Pushing Business Rules onto a Value Type | p. 111 |
Adding a Third-Party Value Type | p. 114 |
Specifying Defaults and Other Characteristics | p. 122 |
Isolating Infrastructure Services | p. 125 |
A Taxonomy of Services | p. 126 |
The Domain Object Container | p. 128 |
Dependency Injection | p. 130 |
Using Services in Fixtures | p. 131 |
Requirements for Writing Services | p. 132 |
Using Interfaces for Repositories | p. 134 |
Implementing a Calendar Service | p. 136 |
Hints and Tips for Writing Services | p. 139 |
Techniques | p. 143 |
Distributing Class Responsibilities | p. 145 |
Applying Coad Colors | p. 146 |
Factoring Out Objects | p. 148 |
Balancing Responsibilities | p. 152 |
Representing Large Collections with Finder | p. 155 |
Contributing Actions from Services | p. 158 |
Applying Domain Patterns | p. 163 |
Type as Factory Pattern | p. 164 |
Knowledge Level Pattern | p. 170 |
Null Object Pattern | p. 173 |
Role Object Pattern | p. 175 |
User Peer Object Pattern | p. 180 |
Strategy Pattern | p. 181 |
Process Object Pattern | p. 186 |
Keeping the Model Maintainable | p. 193 |
Analyzing the Structure of CarServ | p. 194 |
Decoupling by Moving Responsibilities | p. 197 |
Decoupling by Introducing Interfaces | p. 199 |
Layering Modules | p. 206 |
Decoupling by Splitting Classes | p. 208 |
Introducing an Application Package | p. 209 |
An Application Architecture Blueprint | p. 212 |
Scenario Testing | p. 217 |
Writing Developer Tests | p. 218 |
Scenario Testing Using FitNesse | p. 223 |
Getting Ready to Write Scenario Tests | p. 224 |
Writing Scenario Tests | p. 229 |
Hints and Tips | p. 236 |
Practices | p. 239 |
Developing Domain Applications | p. 241 |
The Layered Architecture | p. 242 |
Deployment Options | p. 243 |
Which Option to Choose? | p. 246 |
Development Activities | p. 249 |
Configuration Management | p. 252 |
Working Effectively | p. 255 |
Naked Objects as a Design Tool | p. 259 |
Using Naked Objects Only in Development | p. 259 |
Decoupling from the Framework | p. 260 |
Programming Model Interaction Protocol | p. 264 |
Changing the Programming Model | p. 266 |
Integrating with Web Frameworks | p. 269 |
Deploying an Embedded Metamodel | p. 270 |
Integrating Layers with the Custom Presentation Option | p. 281 |
Integrating with the Database | p. 287 |
Configuring XML Persistence | p. 288 |
Mapping Entities Using JPA Annotations | p. 290 |
Mapping Value Objects Using JPA Annotations | p. 296 |
Mapping Relationships | p. 298 |
Porting over Repositories | p. 302 |
Deploying and Running the Application | p. 305 |
Integrating Within the Enterprise | p. 311 |
Bounded Context Patterns | p. 312 |
Exposing a RESTful Web Service for Other Systems | p. 314 |
Integrating Using an Enterprise Service Bus | p. 320 |
Deploying the Full Runtime | p. 333 |
Deploying the Application | p. 333 |
Securing the Application | p. 342 |
Deploying the Sister Projects | p. 347 |
A CarServ Retrospective | p. 352 |
The DSFA Application | p. 353 |
Closing Thoughts | p. 354 |
Appendixes | p. 363 |
Programming Model Cheat Sheet | p. 365 |
Eclipse Templates | p. 369 |
Bibliography | p. 373 |
Index | p. 377 |
Table of Contents provided by Ingram. All Rights Reserved. |
The New copy of this book will include any supplemental materials advertised. Please check the title of the book to determine if it should include any access cards, study guides, lab manuals, CDs, etc.
The Used, Rental and eBook copies of this book are not guaranteed to include any supplemental materials. Typically, only the book itself is included. This is true even if the title states it includes any access cards, study guides, lab manuals, CDs, etc.