Presentation is loading. Please wait.

Presentation is loading. Please wait.

Chris Hance. Where do patterns come from?  Canonical Answer  Design Patterns: Elements of Reusable Object- Oriented Software, “Gang Of Four”  Patterns.

Similar presentations


Presentation on theme: "Chris Hance. Where do patterns come from?  Canonical Answer  Design Patterns: Elements of Reusable Object- Oriented Software, “Gang Of Four”  Patterns."— Presentation transcript:

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?


Download ppt "Chris Hance. Where do patterns come from?  Canonical Answer  Design Patterns: Elements of Reusable Object- Oriented Software, “Gang Of Four”  Patterns."

Similar presentations


Ads by Google