front matter

 

preface

Why write another book on object-oriented design when so many are out there? This was the question I had to answer for myself before embarking on this project.

We already possess a wealth of knowledge about object-oriented design from the early works of Dave Parnas, Grady Booch’s books on UML and object-oriented analysis, and Eric Evans’ domain-driven design approach. However, object-oriented design is not merely a pure engineering task; it transcends into art. No prescribed sequence of steps will unfailingly lead us to an optimal design. Instead, object-oriented design demands a creative approach.

This book delves into object-oriented design from two specific angles: how to prevent the complexity of a system from skyrocketing and how to achieve “good-enough” designs.

First, most of a developer’s work revolves around maintaining and evolving existing systems. Unfortunately, without due care, every time you make changes to a software system, it becomes more complex, even if it is well designed from the outset. Therefore, this book greatly emphasizes how to combat the natural growth in complexity.

acknowledgments

about this book

Who should read this book

How this book is organized: A road map

About the code

liveBook discussion forum

Other online resources

about the author

about the cover illustration