ScrewTurn Wiki

Welcome to the Presentation Patterns Wiki!!


This wiki is the online draft of the book "Presentation Patterns" for Addison Wesley by Jeremy Miller with contributions from Martin Fowler. At this time the book is specifically covering design patterns and issues for building the behavioral aspects of desktop applications and rich clients. There are a plethora of good books describing the mechanics of each of the major presentation technologies (WinForms, WPF, Silverlight, Flex, Swing, etc.), but next to nothing that describes the guts of a user interface application under the skin. Presentation Patterns represents an effort to fill that missing niche with a serious treatment of the code organization just below the skin. Presentation Patterns is meant to be a book about timeless software design concepts rather than a specific technology. At this time the book is being conceived as a "duplex book."

The book will flesh out, modernize, and generally finish the previous "Build Your own CAB" series from Jeremy Miller and the previous writings of Martin Fowler on presentation patterns for a planned sequel to "Patterns of Enterprise Application Architecture".

The current thought is that the book will be available sometime in the spring of 2010.

Edit

Summary

Inside of an enterprise application, the user interface layer can be very complex in its own right and is a huge source of potential bugs because of the element of human interaction. This book will present the design patterns that can be used to manage the complexity of user interface code. The book will discuss patterns for organizing the responsibilities of a single screen, coordinating the activities of multiple screens within an application, and architecting a structure that allows a desktop application to be efficiently extended over a longer lifecycle.



Edit

Table of Contents (very likely to change)

  1. Introduction
  2. Separated Presentation
    1. Autonomous View
    2. The Humble Dialog Box
    3. Separated Presentation
    4. GUI Architectures
    5. Passive View
    6. Supervising Controller
    7. Presentation Model (Model-View-ViewModel)
    8. Assigning Screen Responsibilities
    9. Communication between the View and Presenter
    10. What’s the Model?
    11. Model Based Validation with the Notification Pattern
  3. The Mechanics of the View
    1. Managing Screen State
    2. Flow Synchronization
    3. Observer Synchronization
    4. Flattener
    5. MicroControllers
    6. Embedded Controller
    7. Screen State
    8. Latch
  4. Complex Screens
    1. Composite Controller
    2. Layout (RegionManager/Container)
  5. Composite Applications
    1. Coordination between Screens
    2. Screen Activation Lifecycle
    3. Graceful Application Shutdown
    4. Presenter First
    5. View First
    6. The Application Shell
    7. Application Controller
    8. Screen Conductor
    9. Screen Collection
    10. Screen Locator
    11. Screen Activator
    12. Screen Factory
    13. Shell Service
    14. Menu State
    15. Layer SuperType
    16. Tabbed MDI Layout
    17. Web Layout
    18. Event Aggregator
    19. Commands
  6. Crafting a Domain Specific Language (not well defined yet)
  7. Applying Conventions
  8. Modularity
    1. Using an Inversion of Control Tool
    2. Bootstrapper
    3. Registry

  1. Communicating with the Server
    1. Message Bus
    2. Command Executor (pattern)
    3. Mobile Objects
    4. Message Batching

  1. Automated Testing
    1. Unit testing the Presenter layer
    2. Unit testing the View
    3. Subcutaneous Testing
    4. Strategies for User Interface Testing
    5. Screen Driver (pattern)

ScrewTurn Wiki version 2.0.37. Some of the icons created by FamFamFam.