rent-now

Rent More, Save More! Use code: ECRENTAL

5% off 1 book, 7% off 2 books, 10% off 3+ books

9780201715941

Design Patterns Explained : A New Perspective on Object-Oriented Design

by ;
  • ISBN13:

    9780201715941

  • ISBN10:

    0201715945

  • Edition: 2nd
  • Format: Paperback
  • Copyright: 2005-01-01
  • Publisher: Addison-Wesley Professional
  • View Upgraded Edition
  • Purchase Benefits
  • Free Shipping Icon Free Shipping On Orders Over $35!
    Your order must be $35 or more to qualify for free economy shipping. Bulk sales, PO's, Marketplace items, eBooks and apparel do not qualify for this offer.
  • eCampus.com Logo Get Rewarded for Ordering Your Textbooks! Enroll Now
List Price: $54.99

Summary

Design patterns offer proven opportunities for creating flexible, reusable software -- but until now, their complexity has prevented most software professionals from taking full advantage of them. Now, there's a simple, gentle introduction to patterns that helps software practitioners gain the benefits -- without the confusion. Unlike many books on patterns, Design Patterns Explained doesn't assume that its readers already have an in-depth understanding of object-oriented design. Rather, it teaches object-oriented design and patterns together, helping developers gain deeper insights into both topics far more quickly. Shalloway and Trott don't just introduce a laundry list of patterns: they explain why each pattern works, the organizing principles upon which the pattern is based, and above all, how the patterns work together in real world object-oriented designs. For all software developers, programmers, architects, and project managers who want to succeed with patterns.

Author Biography

Alan Shalloway is founder, CEO, and principal consultant of Net Objectives, an object-oriented consulting and training organization.

Table of Contents

Preface xv
From Object Orientation to Patterns to True Object Orientation xvi
From Artificial Intellegence to Patterns to True Object Orientation xxi
A Note About Conventions Used in This Book xxiv
Feedback xxv
Acknowledgments xxvi
PART I An Introduction to Object-Oriented Software Development 1(42)
The Object-Oriented Paradigm
3(26)
Overview
3(1)
Before The Object-Oriented Paradigm: Functional Decomposition
4(2)
The Problem of Requirements
6(1)
Dealing with Changes: Using Functional Decomposition
7(3)
Dealing with Changing Requirements
10(4)
The Object-Oriented Paradigm
14(8)
Object-Oriented Programming in Action
22(2)
Special Object Methods
24(2)
Summary
26(3)
The UML---The Unified Modeling Language
29(14)
Overview
29(1)
What Is the UML?
29(2)
Why Use the UML?
31(1)
The Class Diagram
31(7)
Interaction Diagrams
38(2)
Summary
40(3)
PART II The Limitations of Traditional Object-Oriented Design 43(26)
A Problem That Cries Out for Flexible Code
45(12)
Overview
45(1)
Extracting Information from a CAD/CAM System
45(1)
Understand the Vocabulary
46(2)
Describe the Problem
48(3)
The Essential Challenges and Approaches
51(4)
Summary
55(2)
A Standard Object-Oriented Solution
57(12)
Overview
57(1)
Solving with Special Cases
57(8)
Summary
65(1)
Supplement: C++ Code Examples
66(3)
PART III Design Patterns 69(114)
An Introduction to Design Patterns
71(16)
Overview
71(1)
Design Patterns Arose from Architecture and Anthropology
72(5)
Moving from Architectural to Software Design Patterns
77(3)
Why Study Design Patterns?
80(4)
Other Advantages to Studying Design Patterns
84(2)
Summary
86(1)
The Facade Pattern
87(8)
Overview
87(1)
Introducing the Facade Pattern
87(1)
Learning the Facade Pattern
88(3)
Field Notes: The Facade Pattern
91(1)
Relating the Facade Pattern to the CAD/CAM Problem
92(1)
Summary
93(2)
The Adapter Pattern
95(14)
Overview
95(1)
Introducing the Adapter Pattern
96(1)
Learning the Adapter Pattern
96(7)
Field Notes: The Adapter Pattern
103(3)
Relating the Adapter Pattern to the CAD/CAM Problem
106(1)
Summary
106(1)
Supplement: C++ Code Example
107(2)
Expanding Our Horizons
109(14)
Overview
109(1)
Objects: the Traditional View and the New View
110(2)
Encapsulation: the Traditional View and the New View
112(3)
Find What Is Varying and Encapsulate It
115(4)
Commonality/Variability and Abstract Classes
119(2)
Summary
121(2)
The Bridge Pattern
123(40)
Overview
123(1)
Introducing the Bridge Pattern
123(2)
Learning the Bridge Pattern: An Example
125(11)
An Observation About Using Design Patterns
136(2)
Learning the Bridge Pattern: Deriving It
138(12)
The Bridge Pattern in Retrospect
150(1)
Field Notes: Using the Bridge Pattern
150(5)
Summary
155(2)
Supplement: C++ Code Examples
157(6)
The Abstract Factory Pattern
163(20)
Overview
163(1)
Introducing the Abstract Factory Pattern
163(1)
Learning the Abstract Factory Pattern: An Example
164(7)
Learning the Abstract Factory Pattern: Implementing It
171(4)
Field Notes: The Abstract Factory Pattern
175(4)
Relating the Abstract Factory Pattern to the CAD/CAM Problem
179(1)
Summary
179(1)
Supplement: C++ Code Examples
180(3)
PART IV Putting It All Together: Thinking in Patterns 183(44)
How Do Experts Design?
185(12)
Overview
185(1)
Building by Adding Distinctions
185(9)
Summary
194(3)
Solving the CAD/CAM Problem with Patterns
197(20)
Overview
197(1)
Review of the CAD/CAM Problem
197(2)
Thinking in Patterns
199(1)
Thinking in Patterns: Step 1
199(1)
Thinking in Patterns: Step 2a
200(6)
Thinking in Patterns: Step 2b
206(4)
Thinking in Patterns: Step 2c
210(1)
Thinking in Patterns: Step 2d (FAcade)
210(2)
Thinking in Patterns: Step 2d (Adapter)
212(1)
Thinking in Patterns: Step 2d (Abstract Factory)
213(1)
Thinking in Patterns: Step 3
213(1)
Comparison with the Previous Solution
214(1)
Summary
215(2)
The Principles and Strategies of Design Patterns
217(10)
Overview
217(1)
The Open-Closed Principle
218(1)
The Principle of Designing from Context
218(5)
The Principle of Containing Variation
223(1)
Summary
224(3)
PART V Handling Variations with Design Patterns 227(76)
The Strategy Pattern
229(12)
Overview
229(1)
An Approach to Handling New Requirements
229(3)
Initial Requirements of the Case Study
232(1)
Handling New Requirements
233(4)
The Strategy Pattern
237(2)
Field Notes: Using the Strategy Pattern
239(1)
Summary
240(1)
The Decorator Pattern
241(14)
Overview
241(1)
A Little More Detail
241(2)
The Decorator Pattern
243(1)
Applying the Decorator Pattern to the Case Study
244(4)
Another Example: Input/Output
248(2)
Field Notes: Using the Decorator Pattern
250(2)
Summary
252(1)
Supplement: C++ Code Examples
252(3)
The Singleton Pattern and the Double-Checked Locking Pattern
255(8)
Overview
255(1)
Introducing the Singleton Pattern
256(1)
Applying the Singleton Pattern to the Case Study
256(2)
A Variant: The Double-Checked Locking Pattern
258(3)
Field Notes: Using the Singleton and Double-Checked Locking Patterns
261(1)
Summary
261(1)
Supplement: C++ Code Examples
262(1)
The Observer Pattern
263(16)
Overview
263(1)
Categories of Patterns
263(2)
More Requirements for the Case Study
265(1)
The Observer Pattern
266(1)
Applying the Observer to the Case Study
267(7)
Field Notes: Using the Observer Pattern
274(1)
Summary
275(1)
Supplement: C++ Code Examples
276(3)
The Template Method Pattern
279(6)
Overview
279(1)
More Requirements for the Case Study
279(1)
The Template Method Pattern
280(1)
Applying the Template Method to the Case Study
280(2)
Field Notes: Using the Template Method Pattern
282(2)
Summary
284(1)
The Factory Method Pattern
285(6)
Overview
285(1)
More Requirements for the Case Study
285(2)
The Factory Method Pattern
287(1)
Field Notes: Using the Factory Method Pattern
287(2)
Summary
289(2)
The Analysis Matrix
291(12)
Overview
291(1)
In the Real World: Variations
291(1)
Case Study in Variation: An International E-Tail System
292(7)
Field Notes
299(3)
Summary
302(1)
PART VI Endings and Beginnings 303(20)
Design Patterns Reviewed from the New Perspective of Object-Oriented Design
305(8)
Overview
305(1)
A Summary of Object-Oriented Principles
305(1)
How Design Patterns Encapsulate Implementations
306(1)
Commonality/Variability Analysis and Design Patterns
307(1)
Decomposing a Problem Domain into Responsibilities
308(1)
Relationships Within a Pattern
309(1)
Patterns and Contextual Design
310(1)
Field Notes
311(1)
Summary
311(2)
Bibliography
313(10)
Design Patterns Explained: The Web Site Companion
313(1)
Recommended Reading on Design Patterns and Object Orientation
314(2)
Recommended Reading for Java Programmers
316(1)
Recommended Reading for C++ Programmers
317(1)
Recommended Reading for COBOL Programmers
317(1)
Recommended Reading on eXtreme Programming
318(1)
Recommended Reading on General Programming
318(1)
Personal Favorites
319(4)
Index 323

Supplemental Materials

What is included with this book?

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.

Rewards Program