1st Edition

Software Architecture Design Patterns in Java

By Partha Kuchana Copyright 2004
    514 Pages 223 B/W Illustrations
    by Auerbach Publications

    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.

    AN INTRODUCTION TO DESIGN PATTERNS
    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