Download presentation
Presentation is loading. Please wait.
Published byIrma Goodwin Modified over 9 years ago
1
Chris Hance
2
Where do patterns come from? Canonical Answer Design Patterns: Elements of Reusable Object- Oriented Software, “Gang Of Four” Patterns of Enterprise Application Architecture (PoEAA), Martin Fowler Real Answer “Lots of people do it this way.”
3
Lots of People are Wrong Anti-pattern Common practice that’s (usually) inefficient or incorrect. Get used to “It Depends” www.c2.com/cgi/wiki “Portland Pattern Repository's Wiki” www.c2.com/cgi/wiki
4
The Application Record Student Arrivals / Departures (Check In / Check Out) Enforce rules on student custody, etc. Integrate with a legacy VB6 system
5
Intent: Partial Rewrite First stab at MVC/MVP/… Isolate UI from Model COM-compatible Standardized Control behavior
6
Some (COM/VB6) Limitations No constructor parameters No overloading Events "disappear" in interfaces
7
Attempt #1 UIUberDLL Model DAL DALStub Controls "Controller" Form How many DALs in one DLL?
8
Attempt #2 UIUberDLL Model IDAL Controls "Controller" Form DAL DALStub Circular Dependency New Rule: Model doesn't talk to the DAL.
9
Attempt #3 Factory UI Controls "Controller" Form Model IDAL DAL(Stub) Next: Add Interfaces.
10
Attempt #4: With Interfaces Factory UI Controls "Controller" Form Model DTO DAL(Stub) Interfaces ModelInterface DTOInterface FactoryInterface DALInterface
11
Still Awake? Figure 17. Obligatory Useless Diagram
12
Low Coupling! What is it good for? Reusable Code? Manageable Code Won't somebody think of the maintenance programmers?
13
Back to the Application Concepts Check-In/Check-Out Student Contact School Teacher User
14
Multiple Factories UI Controls "Controller" Form CheckInOutInterfaces CheckInOutModelCheckInOutFactory CheckInOutDAL ContactInterfaces ContactModelContactFactory ContactDAL Separate the concepts for maintenance programmer sanity, and some reusability. Do I need School, Teacher, Student, etc?
15
Tour the Model That means open Visual Studio. Yes, now.
16
So About the UI MVC MVP (“retired” per Fowler) Passive View Supervising Controller MVVM Presentation Model
17
Supervising Controller Figure π¾. Supervising Controller Sequence Diagram http://martinfowler.com/eaaDev/SupervisingPresenter.html
18
How to test the Controller? View Form Control(s) ViewInterfaces IForm IControl(s) Controller ViewStub FormStub ControlStub(s) Pick a View at Runtime
19
IControl(s)? Yes, define ITextbox, ICheckbox, ad nauseam. Need control wrappers that implement ITextbox, etc. = Adapter pattern. Also useful for standardized control behavior. = Decorator pattern.
20
And a concession to VB6 VB6 can’t define events in interfaces Events only work with Dim WithEvents txt As Textbox They don’t fire for Dim WithEvents itxt As ITextbox
21
Alternate Event System WeakReference to objects String event / method name Marshal.IsComObject() TypeLibInfo.InvokeSub() for COM objects MemberInfo.Invoke() for CLR objects Parameters are ugly.
22
Tour the UI Or what I have of it. (Work in Progress) We can always fall back to VB6 sample code.
23
The Whole… Thing View Form Control(s) ViewInterfaces IForm IControl(s) Controller CheckInOutInterfaces CheckInOutModelCheckInOutFactory CheckInOutDALContactInterfaces ContactModelContactFactory ContactDAL Well, the Event library is omitted.
24
TODO Replace custom DAL with NHibernate or similar (in lieu of manual caching). Templates or other codegen for UI repetitiveness. ObservableCollection?
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.