Always Learning

Advanced Search

Elemental Design Patterns

Elemental Design Patterns

Jason Smith

Apr 2012, Hardback, 368 pages
ISBN13: 9780321711922
ISBN10: 0321711920
This title is no longer available.

This title cannot be purchased online
  • Print pagePrint page
  • Email this pageEmail page
  • Share

2012 Jolt Award Finalist!

Even experienced software professionals find it difficult to apply patterns in ways that deliver substantial value to their organizations. In Elemental Design Patterns, Jason McC. Smith addresses this problem head-on, helping developers harness the true power of patterns, map them to real software implementations more cleanly and directly, and achieve far better results. Part tutorial, part example-rich cookbook, this resource will help developers, designers, architects, and analysts successfully use patterns with a wide variety of languages, environments, and problem domains. Every bit as important, it will give them a deeper appreciation for the work they’ve chosen to pursue.

Smith presents the crucial missing link that patterns practitioners have needed: a foundational collection of simple core patterns that are broken down to their core elements. If you work in software, you may already be using some of these elemental design patterns every day. Presenting them in a comprehensive methodology for the first time, Smith names them, describes them, explains their importance, helps you compare and choose among them, and offers a framework for using them together. He also introduces an innovative Pattern Instance Notation diagramming system that makes it easier to work with patterns at many levels of granularity, regardless of your goals or role.

If you’re new to patterns, this example-rich approach will help you master them piece by piece, logically and intuitively. If you’re an experienced patterns practitioner, Smith follows the Gang of Four format you’re already familiar with, explains how his elemental patterns can be composed into conventional design patterns, and introduces highly productive new ways to apply ideas you’ve already encountered. No matter what your level of experience, this infinitely practical book will help you transform abstract patterns into high-value solutions.

Figures xi

Tables xv

Listings xvii

Foreword xix

Preface xxi

Acknowledgments xxiii

About the Author xxv

Chapter 1: Introduction to Design Patterns 1

1.1 Tribal Musings 5

1.2 Art or Science? 9

Chapter 2: Elemental Design Patterns 13

2.1 Background 14

2.2 The Where, the Why, the How 17

2.3 Core EDPs 42

2.4 Conclusion 44

Chapter 3: Pattern Instance Notation 45

3.1 Basics 45

3.2 The PINbox 49

3.3 Conclusion 65

Chapter 4: Working with EDPs 67

4.1 Composition of Patterns 68

4.2 Recreating Decorator 77

4.3 Refactoring 91

4.4 The Big Picture 101

4.5 Why You May Want to Read the Appendix 105

4.6 Advanced Topics 108

4.7 Conclusion 112

Chapter 5: EDP Catalog 115

Create Object 117

Retrieve 126

Inheritance 130

Abstract Interface 140

Delegation 145

Redirection 151

Conglomeration 159

Recursion 165

Revert Method 172

Extend Method 181

Delegated Conglomeration 187

Redirected Recursion 193

Trusted Delegation 200

Trusted Redirection 209

Deputized Delegation 216

Deputized Redirection 222

Chapter 6: Intermediate Pattern Compositions 229

Fulfill Method 231

Retrieve New 235

Retrieve Shared 240

Objectifier 244

Object Recursion 251

Chapter 7: Gang of Four Pattern Compositions 259

7.1 Creational Patterns 260

7.2 Structural Patterns 265

7.3 Behavioral Patterns 273

7.4 Conclusion 279

Appendix A:Rho-Calculus 281

A.1 Reliance Operators 282

A.2 Transitivity and Isotopes 285

A.3 Similarity 286

A.4 EDP Formalisms 287

A.5 Composition and Reduction Rules 291

A.6 Pattern Instance Notation and Roles 293

A.7 EDP Definitions 295

A.8 Intermediate Pattern Definitions 308

A.9 Gang of Four Pattern Definitions 313

Bibliography 321

Index 325

  • The most systematic and unified approach to learning, teaching, and thinking about design patterns
  • Understand the true power of patterns, place them in context, and master a common set of terms and concepts for using them
  • Learn a cleaner, more direct way to map patterns to actual software implementations
  • A language-independent view: applicable in any environment

Jason McC. Smith received his Ph.D. in computer science in 2005 from the University of North Carolina at Chapel Hill, where the Elemental Design Patterns were born as part of the System for Pattern Query and Recognition (SPQR) project. He then spent four years at IBM Watson Research and had the opportunity to apply the lessons of SPQR and the EDP catalog and compositional approach to immense bodies of software, both legacy and modern. Dr. Smith is currently senior research scientist at The Software Revolution, Inc., in Kirkland, WA, where he continues to refine the EDP catalog and look for ways to enhance the company’s goal of automated modernization and transformation of legacy systems.