Software engineering and computer science students need a resource that explains how to apply design patterns at the enterprise level, allowing them to design and implement systems of high stability and quality.
Software Architecture Design Patterns in Java is a detailed explanation of how to apply design patterns and develop software architectures. It provides in-depth examples in Java, and guides students by detailing when, why, and how to use specific patterns.
This textbook presents 42 design patterns, including 23 GoF patterns. Categories include: Basic, Creational, Collectional, Structural, Behavioral, and Concurrency, with multiple examples for each. The discussion of each pattern includes an example implemented in Java. The source code for all examples is found on a companion Web site.
The author explains the content so that it is easy to understand, and each pattern discussion includes Practice Questions to aid instructors. The textbook concludes with a case study that pulls several patterns together to demonstrate how patterns are not applied in isolation, but collaborate within domains to solve complicated problems.
Design Patterns: Origin and History
Architectural to Software Design Patterns
What is a Design Pattern?
More about Design Patterns
About This Book
UNIFIED MODELING LANGUAGE (UML)
UML: A Quick Reference
Class Diagrams
Sequence diagrams
BASIC PATTERNS
Interface
Description
Example
Practice Questions
Abstract Parent Class
Description
Example
Practice Questions
Private Methods
Description
Example
Practice Questions
Accessor Methods
Description
Accessor Method Nomenclature
Example
Direct Reference versus Accessor Methods
Practice Questions
Constant Data Manager
Description
Example
Practice Questions
Immutable Object
Description
Example
Practice Questions
Monitor
Description
Example
Practice Questions
CREATIONAL PATTERNS
Factory Method
Description
Example
Practice Questions
Singleton
Description
Who Should Be Responsible?
Example
Practice Questions
Abstract Factory
Description
Abstract Factory versus Factory Method
Example I
Example II
Practice Questions
Prototype
Description
Shallow Copy versus Deep Copy
Example I
Example II
Practice Questions
Builder
Description
Example I
Example II
Example III
Practice Questions
COLLECTIONAL PATTERNS
Composite
Description
Example
Design Approach I
Design Approach II
Practice Questions
Iterator
Description
Iterators in Java
Filtered Iterators
Internal versus External Iterators
Example: Internal Iterator
Client/Container Interaction
Example: External Filtered Iterator
Practice Questions
Flyweight
Description
How to Design a Flyweight in Java
Design Highlights
Example
Design Approach I
Design Approach II
Practice Questions
Visitor
Description
Defining new operations on the object collection
Adding objects of a new type to the collection
Example
Design Approach I
Design Approach II
Design Approach III (Composite Pattern)
Design Approach IV (The Visitor Pattern)
Defining a new operation on the order object collection
Adding a new order type to the collection
Practice Questions
STRUCTURAL PATTERNS
Decorator
Description
Characteristics of a Decorator
Example
Concrete Logger Decorators
Adding a New Message Logger
Adding a New Decorator
Practice Questions
Adapter
Description
Class Adapters versus Object Adapters
Example
Address Adapter as an Object Adapter
Practice Questions
Chain of Responsibility
Description
Example
Practice Questions
Façade
Description
Example
Important Notes
Practice Questions
Proxy
Description
Proxy versus Other Patterns
RMI: A Quick Overview
RMI and Proxy Pattern
Example
Additional Notes
Practice Questions
Bridge
Description
Example
Bridge Pattern versus Adapter Pattern
Practice Questions
Virtual Proxy
Description
Example
Practice Questions
Counting Proxy
Description
Example
Practice Questions
Aggregate Enforcer
Description
Example
Practice Questions
Explicit Object Release
Description
The Finally Statement
Example
Practice Questions
Object Cache
Description
Example
Practice Questions
BEHAVIORAL PATTERNS
Command
Description
Example I
Example II
Practice Questions
Mediator
Description
Mediator versus Façade
Example I
Example II
Practice Questions
Mement
Description
Example
Practice Questions
Observer
Description
Adding New Observers
Example
Practice Questions
Interpreter
Description
Example
Additional Notes
Practice Questions
State
Description
Stateful Object: An Example
Example
Practice Questions
Strategy
Description
Strategies versus Other Alternatives
Strategy versus State
Example
Practice Questions
Null Object
Description
Example
Practice Questions
Template Method
Description
Example
Additional Notes
Practice Questions
Object Authenticator
Description
Example
Practice Questions
Common Attribute Registry
Description
Example
Practice Questions
CONCURRENCY PATTERNS
Critical Section
Description
Example
Practice Questions
Consistent Lock Order
Description
Example
Practice Questions
Guarded Suspension
Description
Example
Practice Questions
Read-Write Lock
Description
Example
Practice Questions
CASE STUDY
Case Study: A Web Hosting Company
Objective
KPS Hosting Solutions: A Brief Overview
Requirements
Business Objects and their Association
Framework for Application Processing
Conclusion
APPENDIXES
List of Design Patterns
References
Biography
Partha Kuchana is an experienced enterprise systems architect. He has eleven years of experience in all aspects of project delivery management (onsite/offshore models), enterprise architecture, design, development, mentoring and training. He is a Sun certified enterprise architect.
"Kuchana … does a good job contrasting patterns that may seem similar to the novice. … This is a useful addition to a collection on software design patterns. "
- CHOICE, Feb. 2005, Vol. 42, No. 06
"Why am I so pleased with this book? What makes it any different than other design pattern books? Well, first of all the volume is huge. Kuchana's book covers all the original Gang of Four patterns plus another 20 or so patterns, including a couple of multithreading related patterns. Second, the text itself is very readable and doesn't cling too much on fancy words. The explanations are concise and to the point…All in all a very good choice for filling the gaping design patterns encyclopedia slot in your bookshelf. Highly recommended."
"Partha Kuchana is an experienced Enterprise Systems Architect. He understands that patterns are not about things that are just good ideas, but that patterns are about capturing knowledge bred from experience. This hard-won knowledge is what Partha is sharing with readers of his book…Keep it handy for all those 'How do I do this in Java?' questions where you wish you had an expert in the office next door to provide answers. This book is the next best thing."
Linda Rising, from The Foreword