Software Architecture Design Patterns in Java

Book description

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.

Table of contents

  1. COVER PAGE
  2. TITLE PAGE
  3. COPYRIGHT PAGE
  4. DEDICATION
  5. FOREWORD
  6. ABOUT THE AUTHOR
  7. ACKNOWLEDGMENTS
  8. I. AN INTRODUCTION TO DESIGN PATTERNS
    1. 1. DESIGN PATTERNS: ORIGIN AND HISTORY
      1. ARCHITECTURAL TO SOFTWARE DESIGN PATTERNS
      2. WHAT IS A DESIGN PATTERN?
      3. MORE ABOUT DESIGN PATTERNS
      4. ABOUT THIS BOOK
  9. II. UNIFIED MODELING LANGUAGE (UML)
    1. 2. UML: A QUICK REFERENCE
      1. STRUCTURE DIAGRAMS
      2. BEHAVIOR DIAGRAMS
      3. MODEL MANAGEMENT DIAGRAMS
      4. CLASS DIAGRAMS
      5. SEQUENCE DIAGRAMS
  10. III. BASIC PATTERNS
    1. 3. INTERFACE
      1. DESCRIPTION
      2. EXAMPLE
      3. PRACTICE QUESTIONS
    2. 4. ABSTRACT PARENT CLASS
      1. DESCRIPTION
      2. EXAMPLE
      3. PRACTICE QUESTIONS
    3. 5. PRIVATE METHODS
      1. DESCRIPTION
      2. EXAMPLE
      3. PRACTICE QUESTIONS
    4. 6. ACCESSOR METHODS
      1. DESCRIPTION
      2. ACCESSOR METHOD NOMENCLATURE
      3. EXAMPLE
      4. DIRECT REFERENCE VERSUS ACCESSOR METHODS
      5. PRACTICE QUESTIONS
    5. 7. CONSTANT DATA MANAGER
      1. DESCRIPTION
      2. EXAMPLE
      3. PRACTICE QUESTIONS
    6. 8. IMMUTABLE OBJECT
      1. DESCRIPTION
      2. EXAMPLE
      3. PRACTICE QUESTIONS
    7. 9. MONITOR
      1. DESCRIPTION
      2. EXAMPLE
      3. PRACTICE QUESTIONS
  11. IV. CREATIONAL PATTERNS
    1. 10. FACTORY METHOD
      1. DESCRIPTION
      2. EXAMPLE
      3. PRACTICE QUESTIONS
    2. 11. SINGLETON
      1. DESCRIPTION
      2. WHO SHOULD BE RESPONSIBLE?
      3. EXAMPLE
      4. PRACTICE QUESTIONS
    3. 12. ABSTRACT FACTORY
      1. DESCRIPTION
      2. ABSTRACT FACTORY VERSUS FACTORY METHOD
      3. EXAMPLE I
      4. EXAMPLE II
      5. PRACTICE QUESTIONS
    4. 13. PROTOTYPE
      1. DESCRIPTION
      2. SHALLOW COPY VERSUS DEEP COPY
      3. EXAMPLE I
      4. EXAMPLE II
      5. PRACTICE QUESTIONS
    5. 14. BUILDER
      1. DESCRIPTION
      2. EXAMPLE I
      3. EXAMPLE II
      4. EXAMPLE III
      5. PRACTICE QUESTIONS
  12. V. COLLECTIONAL PATTERNS
    1. 15. COMPOSITE
      1. DESCRIPTION
      2. EXAMPLE
      3. DESIGN APPROACH I
      4. DESIGN APPROACH II
      5. PRACTICE QUESTIONS
    2. 16. ITERATOR
      1. DESCRIPTION
      2. ITERATORS IN JAVA
      3. FILTERED ITERATORS
      4. INTERNAL VERSUS EXTERNAL ITERATORS
      5. EXAMPLE: INTERNAL ITERATOR
      6. CLIENT/CONTAINER INTERACTION
      7. EXAMPLE: EXTERNAL FILTERED ITERATOR
      8. PRACTICE QUESTIONS
    3. 17. FLYWEIGHT
      1. DESCRIPTION
      2. HOW TO DESIGN A FLYWEIGHT IN JAVA
      3. DESIGN HIGHLIGHTS
      4. EXAMPLE
      5. DESIGN APPROACH I
      6. DESIGN APPROACH II
      7. PRACTICE QUESTIONS
    4. 18. VISITOR
      1. DESCRIPTION
      2. DEFINING NEW OPERATIONS ON THE OBJECT COLLECTION
      3. ADDING OBJECTS OF A NEW TYPE TO THE COLLECTION
      4. EXAMPLE
      5. DESIGN APPROACH I
      6. DESIGN APPROACH II
      7. DESIGN APPROACH III (COMPOSITE PATTERN)
      8. DESIGN APPROACH IV (THE VISITOR PATTERN)
      9. DEFINING A NEW OPERATION ON THE ORDER OBJECT COLLECTION
      10. ADDING A NEW ORDER TYPE TO THE COLLECTION
      11. PRACTICE QUESTIONS
  13. VI. STRUCTURAL PATTERNS
    1. 19. DECORATOR
      1. DESCRIPTION
      2. CHARACTERISTICS OF A DECORATOR
      3. EXAMPLE
      4. CONCRETE LOGGER DECORATORS
      5. ADDING A NEW MESSAGE LOGGER
      6. ADDING A NEW DECORATOR
      7. PRACTICE QUESTIONS
    2. 20. ADAPTER
      1. DESCRIPTION
      2. CLASS ADAPTERS VERSUS OBJECT ADAPTERS
      3. EXAMPLE
      4. ADDRESS ADAPTER AS AN OBJECT ADAPTER
      5. PRACTICE QUESTIONS
    3. 21. CHAIN OF RESPONSIBILITY
      1. DESCRIPTION
      2. EXAMPLE
      3. PRACTICE QUESTIONS
    4. 22. FAÇADE
      1. DESCRIPTION
      2. EXAMPLE
      3. IMPORTANT NOTES
      4. PRACTICE QUESTIONS
    5. 23. PROXY
      1. DESCRIPTION
      2. PROXY VERSUS OTHER PATTERNS
      3. RMI: A QUICK OVERVIEW
      4. RMI AND PROXY PATTERN
      5. EXAMPLE
      6. ADDITIONAL NOTES
      7. PRACTICE QUESTIONS
    6. 24. BRIDGE
      1. DESCRIPTION
      2. EXAMPLE
      3. BRIDGE PATTERN VERSUS ADAPTER PATTERN
      4. PRACTICE QUESTIONS
    7. 25. VIRTUAL PROXY
      1. DESCRIPTION
      2. EXAMPLE
      3. PRACTICE QUESTIONS
    8. 26. COUNTING PROXY
      1. DESCRIPTION
      2. EXAMPLE
      3. PRACTICE QUESTIONS
    9. 27. AGGREGATE ENFORCER
      1. DESCRIPTION
      2. EXAMPLE
      3. PRACTICE QUESTIONS
    10. 28. EXPLICIT OBJECT RELEASE
      1. DESCRIPTION
      2. EXAMPLE
      3. PRACTICE QUESTIONS
    11. 29. OBJECT CACHE
      1. DESCRIPTION
      2. EXAMPLE
      3. PRACTICE QUESTIONS
  14. VII. BEHAVIORAL PATTERNS
    1. 30. COMMAND
      1. DESCRIPTION
      2. EXAMPLE I
      3. EXAMPLE II
      4. PRACTICE QUESTIONS
    2. 31. MEDIATOR
      1. DESCRIPTION
      2. MEDIATOR VERSUS FAÇADE
      3. EXAMPLE I
      4. EXAMPLE II
      5. PRACTICE QUESTIONS
    3. 32. MEMENTO
      1. DESCRIPTION
      2. EXAMPLE
      3. PRACTICE QUESTIONS
    4. 33. OBSERVER
      1. DESCRIPTION
      2. ADDING NEW OBSERVERS
      3. EXAMPLE
      4. PRACTICE QUESTIONS
    5. 34. INTERPRETER
      1. DESCRIPTION
      2. EXAMPLE
      3. ADDITIONAL NOTES
      4. PRACTICE QUESTIONS
    6. 35. STATE
      1. DESCRIPTION
      2. STATEFUL OBJECT: AN EXAMPLE
      3. EXAMPLE
      4. PRACTICE QUESTIONS
    7. 36. STRATEGY
      1. DESCRIPTION
      2. STRATEGIES VERSUS OTHER ALTERNATIVES
      3. STRATEGY VERSUS STATE
      4. EXAMPLE
      5. PRACTICE QUESTIONS
    8. 37. NULL OBJECT
      1. DESCRIPTION
      2. EXAMPLE
      3. PRACTICE QUESTIONS
    9. 38. TEMPLATE METHOD
      1. DESCRIPTION
      2. EXAMPLE
      3. ADDITIONAL NOTES
      4. PRACTICE QUESTIONS
    10. 39. OBJECT AUTHENTICATOR
      1. DESCRIPTION
      2. EXAMPLE
      3. PRACTICE QUESTIONS
    11. 40. COMMON ATTRIBUTE REGISTRY
      1. DESCRIPTION
      2. EXAMPLE
      3. PRACTICE QUESTIONS
  15. VIII. CONCURRENCY PATTERNS
    1. 41. CRITICAL SECTION
      1. DESCRIPTION
      2. EXAMPLE
      3. PRACTICE QUESTIONS
    2. 42. CONSISTENT LOCK ORDER
      1. DESCRIPTION
      2. EXAMPLE
      3. PRACTICE QUESTIONS
    3. 43. GUARDED SUSPENSION
      1. DESCRIPTION
      2. EXAMPLE
      3. PRACTICE QUESTIONS
    4. 44. READ-WRITE LOCK
      1. DESCRIPTION
      2. EXAMPLE
      3. PRACTICE QUESTIONS
  16. IX. CASE STUDY
    1. 45. CASE STUDY: A WEB HOSTING COMPANY
      1. OBJECTIVE
      2. KPS HOSTING SOLUTIONS: A BRIEF OVERVIEW
      3. REQUIREMENTS
      4. BUSINESS OBJECTS AND THEIR ASSOCIATION
      5. FRAMEWORK FOR APPLICATION PROCESSING
      6. CONCLUSION
  17. X. APPENDICES
    1. APPENDIX A: LIST OF DESIGN PATTERNS
    2. APPENDIX B: REFERENCES
      1. WEB REFERENCES

Product information

  • Title: Software Architecture Design Patterns in Java
  • Author(s): Partha Kuchana
  • Release date: April 2004
  • Publisher(s): Auerbach Publications
  • ISBN: 9781135506117