Over the past couple years I've received quite a bit of positive feedback on my "Build Your Own CAB" series on design patterns for building desktop applications. Unfortunately, a lot of the feedback is "it'd be really nice if you'd get around to finishing the series." After all, I didn't really publish anything that actually related to building composite applications. I am wrapping up this series plus quite a bit more (+ incorporating the work that Martin Fowler already did on these topics but didn't publish), but as part of a book for Addison Wesley tentatively entitled "Presentation Patterns." I'll try to blog a lot more about the book next month as I shift to working on it a lot more. I'm strictly focusing on design patterns rather than any particular technology. At a guess, I'd say that half of the samples will be C#/WPF and the rest will be Java, WinForms, and even a couple JavaScript samples.
Here's the rough outline at the moment. If there's something you'd particularly like to see more or less of, feel free to comment on this (please).
- What’s so hard about
building a User Interface?
- Look at everything
that’s going on here
- How do I test this?
- How do I connect
all this together?
- Separated
Presentation
- The travails of
using Active View
- The Humble Dialog
Box (narrative)
- Separated
Presentation (narrative)
- GUI Architectures
(pattern)
- Passive View (pattern)
- Supervising
Controller (pattern)
- Presentation Model
(Model-View-ViewModel) (pattern)
- Communication
between the View and Presenter (narrative)
i. By events
ii. Direct communication
-
- What’s the Model?
(long narrative)
- Model Based
Validation with the Notification Pattern
- The Mechanics of the
View
- Managing Screen State (narrative)
- Flow
Synchronization (pattern)
- Observer Synchronization
(pattern)
- Flattener (pattern)
- MicroControllers
(pattern)
- Embedded Controller
(pattern)
- Screen State (pattern)
- Complex Screens
- Composite
Controller (pattern)
- Layout (pattern)
- The Application Shell
- Coordination
between Screens (narrative)
- Screen Activation
Lifecycle (narrative)
- Presenter First (narrative)
- Application Shell
- Application
Controller
- Screen Collection
- Screen Subject
- Layer SuperType
- Event Coordination
- Coordination
between Screens
- Latch (pattern)
- Event Aggregator
(pattern)
- Command (pattern)
- Crafting a Domain
Specific Language (not well defined yet, but could be a great chapter)
- Modularity
- Using an Inversion
of Control Tool
- Bootstrapper
(pattern)
- Registry (pattern)
- Presentation Chooser (pattern)
- Communicating with
the Server
- Message Bus
- Command Executor
(pattern)
- Automated Testing
- Unit testing the
Presenter layer
- Unit testing the
View
- Subcutaneous
Testing
- Strategies for User
Interface Testing
- Screen Driver
(pattern)
Oh, and my take on "is M-V-VM the same thing as Presentation
Model?" I say yes. I think it's the exact same pattern just described
differently by Fowler and the Microsoft guys. Think Leipzig and Sir
Isaac Newton discovering Calculus at the same time.
Posted
Mon, Jun 1 2009 4:29 PM
by
Jeremy D. Miller