Preface

What's it all about?

This book is about the practice of correctly applying patterns to build software systems. It is intended to complement the outstanding body of patterns available by educating the reader on the general concepts of proper use that hold true regardless of the specific pattern or system. Far too often developers and managers who first attempt to use patterns fail to do so properly because they completely miss the intent and simple concepts involved; instead, they tend to focus on patterns as coding tricks rather than as a higher-level language for describing system design. This book attempts to fix this problem by providing the reader the tools necessary to ensure success.

In the first basic software design course I ever taught, we struggled over how someone could actually “teach” design. What we determined to be the best approach was to present the trade-offs and heuristics through the use of examples and to allow the participants to learn in this manner. I still believe this is a fundamental way to teach design and have tried to carry it forward in my training classes, in my consulting, and also in this book.

The approach I have taken in this book is to provide this insight through a series of system designs from initial conception through code. I recognized early in instructing this type of material that, while design has little to do with code, it is still essential to show the resulting programming language code that is the real end product of system development. I provide many examples to illustrate the use of patterns to build systems that will be implemented in one of three currently popular programming languages: Visual Basic, C++, and Java. While I do dive into the depth of the code to illustrate key points, I have tried not to require a lot of programming or other formal training for the reader.

In order to focus on using patterns rather than on trying to survey the depth of patterns now available,[1] I primarily focus on a core subset of patterns in this book, primarily those originally captured in the now classic Design Patterns [Gam, 95]. I will augment this essential set with a few unique patterns of my own and of other authors where appropriate.

[1] For readers wishing to gather a larger catalog of patterns, I highly recommend Linda Rising's, The Patterns Almanac [Ris, 00] as a reference source.

This book is intended to be read in the order it is presented, although readers may feel free to skip around as they need to. However, I would still suggest reading Chapter 2, “An Introduction to Patterns” before reading other sections. The general approach used in this book is first to introduce the readers to patterns and a subset of object-oriented concepts and notations so that we are all on the same page. I then quickly move into the examples to show the application of patterns to address different problems and show the pros and cons that result as guiding decisions in the system architecture are made.

When I teach patterns, there is usually a point at the beginning of the courses when people simply do not get the mental shift required to look at software development in a new manner. As an instructor I can tell by the glazed look in the students' eyes (although that is often due to the morning caffeine not yet setting in). Suddenly about a third of the way through the material, students start to pull the pieces together and realize that patterns are simply more than coding tricks or language techniques. This paradigm shift seems suddenly to come to the students, and they quickly grasp the importance of these techniques on their entire approach to software development.

My hope is that you, the reader of this material, will think about the material and the examples and gain this same enlightenment. This will occur quickly once we can recognize that there are inherent forces at work in software design, and we can approach the problem from a more esthetic nature, rather than simply as a coding technique. You will begin to look at patterns as a key tool in design and be able to use patterns properly; equally important, you will know how and when not to use them. The ability to look at a problem in terms of the forces at work and the context will greatly improve all subsequent efforts. At this point our goals will have succeeded.

I hope you enjoy the journey.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.221.36.208