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 Facade 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 Facade 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