Design Patterns Explained: A New Perspective on Object-Oriented Design, 2/e (Paperback)
內容描述
Description:
"One of the great things about the book is the
way the authors explain concepts very simply using analogies rather than
programming examples—this has been very inspiring for a product I'm working
on: an audio-only introduction to OOP and software development."
—Bruce Eckel
"...I would expect that readers with a basic
understanding of object-oriented programming and design would find this book
useful, before approaching design patterns completely. Design Patterns
Explained complements the existing design patterns texts and may perform a
very useful role, fitting between introductory texts such as UML Distilled and
the more advanced patterns books."
—James Noble
Leverage the quality and productivity benefits of
patterns—without the complexity! Design Patterns Explained, Second
Edition is the field's simplest, clearest, most practical introduction to
patterns. Using dozens of updated Java examples, it shows programmers and
architects exactly how to use patterns to design, develop, and deliver
software far more effectively.
You'll start with a complete overview of the
fundamental principles of patterns, and the role of object-oriented analysis
and design in contemporary software development. Then, using
easy-to-understand sample code, Alan Shalloway and James Trott illuminate
dozens of today's most useful patterns: their underlying concepts, advantages,
tradeoffs, implementation techniques, and pitfalls to avoid. Many patterns are
accompanied by UML diagrams.
Building on their best-selling First Edition,
Shalloway and Trott have thoroughly updated this book to reflect new software
design trends, patterns, and implementation techniques. Reflecting extensive
reader feedback, they have deepened and clarified coverage throughout, and
reorganized content for even greater ease of understanding. New and revamped
coverage in this edition includes
Better ways to start "thinking in patterns"
How design patterns can facilitate agile
development using eXtreme Programming and other methods
How to use commonality and variability
analysis to design application architectures
The key role of testing into a patterns-driven
development process
How to use factories to instantiate and manage
objects more effectively
The Object-Pool Pattern—a new pattern not
identified by the "Gang of Four"
New study/practice questions at the end of
every chapter
Gentle yet thorough, this book assumes no
patterns experience whatsoever. It's the ideal "first book" on patterns, and a
perfect complement to Gamma's classic Design Patterns. If you're a
programmer or architect who wants the clearest possible understanding of
design patterns—or if you've struggled to make them work for you—read this
book.
Table of
Contents:
I. AN INTRODUCTION TO OBJECT-ORIENTED SOFTWARE
DEVELOPMENT.
- The Object-Oriented Paradigm.
Overview.
Before the Object-Oriented Paradigm:
Functional Decomposition.
The Problem of Requirements.
Dealing with Changes: Using Functional
Decomposition.
Dealing with Changing Requirements.
The Object-Oriented Paradigm.
Object-Oriented Programming in Action.
Special Object Methods.
Summary.
Review Questions.
The UML-The Unified Modeling Language.
Overview.
What Is the UML?
Why Use the UML?
The Class Diagram.
Interaction Diagrams.
Summary.
Review Questions.
II. THE LIMITATIONS OF TRADITIONAL OBJECT-ORIENTED DESIGN.A Problem That Cries Out for Flexible Code.
Overview.
Extracting Information from a CAD/CAM
System.
Understand the Vocabulary.
Describe the Problem.
The Essential Challenges and
Approaches.
Summary.
Review Questions.
- A Standard Object-Oriented Solution.
Overview.
Solving with Special Cases.
Summary.
Review Questions.
III. DESIGN PATTERNS. - An Introduction to Design Patterns.
Overview.
Design Patterns Arose from Architecture
and Anthropology.
Moving from Architectural to Software
Design Patterns.
Why Study Design Patterns?
Other Advantages of Studying Design
Patterns.
Summary.
Review Questions. - The Facade Pattern.
Overview.
Introducing the Facade Pattern.
Learning the Facade Pattern.
Field Notes: The Facade Pattern.
Relating the Facade Pattern to the
CAD/CAM Problem.
Summary.
Review Questions.
- The Adapter Pattern.
Overview.
Introducing the Adapter Pattern.
Learning the Adapter Pattern.
Field Notes: The Adapter Pattern.
Relating the Adapter Pattern to the
CAD/CAM Problem.
Summary.
Review Questions.
- Expanding Our Horizons.
Overview.
Objects: The Traditional View and the
New View.
Encapsulation: The Traditional View and
the New View.
Find What Is Varying and Encapsulate
It.
Commonality and Variability Analysis
and Abstract Classes.
The Qualities of Agile Coding.
Summary.
Review Questions.
- The Strategy Pattern.
Overview.
An Approach to Handling New
Requirements.
The International E-Commerce System
Case Study: Initial Requirements.
Handling New Requirements.
The Strategy Pattern.
Field Notes: Using the Strategy
Pattern.
Summary.
Review Questions. - The Bridge Pattern.
Overview.
Introducing the Bridge Pattern.
Learning the Bridge Pattern: An
Example.
An Observation About Using Design
Patterns.
Learning the Bridge Pattern: Deriving
It.
The Bridge Pattern in Retrospect.
Field Notes: Using the Bridge Pattern.
Summary.
Review Questions.
The Abstract Factory Pattern.
Overview.
Introducing the Abstract Factory
Pattern.
Learning the Abstract Factory Pattern:
An Example.
Learning the Abstract Factory Pattern:
Implementing It.
Field Notes: The Abstract Factory
Pattern.
Relating the Abstract Factory Pattern
to the CAD/CAM Problem.
Summary.
Review Questions.
IV. PUTTING IT ALL TOGETHER: THINKING IN PATTERNS.How Do Experts Design?
Overview.
Building by Adding Distinctions.
Summary.
Review Questions.
- Solving the CAD/CAM Problem with Patterns.
Overview.
Review of the CAD/CAM Problem.
Thinking in Patterns.
Thinking in Patterns: Step 1.
Thinking in Patterns: Step 2a.
Thinking in Patterns: Step 2b.
Thinking in Patterns: Step 2c.
Thinking in Patterns: Steps 2a and 2b
Repeated (Facade).
Thinking in Patterns: Steps 2a and 2b
Repeated (Adapter).
Thinking in Patterns: Steps 2a and 2b
Repeated (Abstract Factory).
Thinking in Patterns: Step 3.
Comparison with the Previous Solution.
Summary.
Review Questions.
V. TOWARD A NEW PARADIGM OF DESIGN.
- The Principles and Strategies of Design Patterns.
Overview.
The Open-Closed Principle.
The Principle of Designing from
Context.
The Principle of Encapsulating
Variation.
Abstract Classes vs. Interfaces.
The Principle of Healthy Skepticism.
Summary.
Review Questions.
- Commonality and Variability Analysis.
Overview.
Commonality and Variability Analysis
and Application Design.
Solving the CAD/CAM Problem with CVA.
Summary.
Review Questions.
- The Analysis Matrix.
Overview.
In the Real World: Variations.
The International E-Commerce System
Case Study: Handling Variation.
Field Notes.
Summary.
Review Questions.
- The Decorator Pattern.
Overview.
A Little More Detail.
The Decorator Pattern.
Applying the Decorator Pattern to the
Case Study.
Another Example: Input/Output.
Field Notes: Using the Decorator
Pattern.
The Essence of the Decorator Pattern.
Summary.
Review Questions.
VI. OTHER VALUES OF PATTERNS.
- The Observer Pattern.
Overview.
Categories of Patterns.
More Requirements for the International
E-Commerce Case Study.
The Observer Pattern.
Applying the Observer to the Case
Study.
Field Notes: Using the Observer
Pattern.
Summary.
Review Questions. - The Template Method Pattern.
Overview.
More Requirements for the International
E-Commerce Case Study.
The Template Method Pattern.
Applying the Template Method to the
International E-Commerce Case Study.
Using the Template Method Pattern to
Reduce Redundancy.
Field Notes: Using the Template Method
Pattern.
Summary.
Review Questions.
VII. FACTORIES.
- Lessons from Design Patterns: Factories.
Overview.
Factories.
The Universal Context Revisited.
Factories Follow Our Guidelines.
Limiting the Vectors of Change.
Another Way to Think About It.
Different Roles of Factories.
Field Notes.
Summary.
Review Questions.
Overview.
- The Singleton Pattern and the Double-Checked Locking
Pattern.
Introducing the Singleton Pattern.
Applying the Singleton Pattern to the
Case Study.
A Variant: The Double-Checked Locking
Pattern.
Reflections.
Field Notes: Using the Singleton and
Double-Checked Locking Patterns.
Summary.
Review Questions.
- The Object Pool Pattern.
Overview.
A Problem Requiring the Management of
Objects.
The Object Pool Pattern.
Observation: Factories Can Do Much More
Than Instantiation.
Summary.
Review Questions. - The Factory Method Pattern.
Overview.
More Requirements for the Case Study.
The Factory Method Pattern.
Factory Method Pattern and
Object-Oriented Languages.
Field Notes: Using the Factory Method
Pattern.
Summary.
Review Questions.
- Summary of Factories.
Overview.
Steps in the Software Process.
Parallels in Factories and XP
Practices.
Scaling Systems.
VIII. ENDINGS AND BEGINNINGS.
- Design Patterns Reviewed: A Summation and a Beginning.
Overview.
A Summary of Object-Oriented
Principles.
How Design Patterns Encapsulate
Implementations.
Commonality and Variability Analysis
and Design Patterns.
Decomposing a Problem Domain into
Responsibilities.
Patterns and Contextual Design.
Relationships Within a Pattern.
Design Patterns and Agile Coding
Practices.
Field Notes.
Summary.
Review Questions.
- Bibliography.
Design Patterns Explained: The Web Site
Companion.
Recommended Reading.
Recommended Reading for Java
Programmers.
Recommended Reading for C++
Programmers.
Recommended Reading for COBOL
Programmers.
Recommended Reading on eXtreme
Programming.
Recommended Reading on General
Programming.
Personal Favorites.
Index.