Using Design Patterns in Real Projects

What is it like to use design pattern in real life programming?
Do the sometimes academic patterns translate into the real world?

The answer is yes. I will back this up with three examples of where I have used patterns in real world projects.


Using Design Patterns in Real Projects -Andy Bulka 2002 http://www.andypatterns.com Using Patterns in Real Projects • What is it like to use design pattern in real life programming? • Do the sometimes academic patterns translate into the real world? • The answer is yes – I will back this up with three examples of where I have used patterns in real world projects. Overview • Patterns - Definitions • Patterns Example • My personal definition and approach to patterns • Commercial Projects using patterns • Patterns I have written • Links, Patterns Groups in Australia What are Patterns? • Patterns are conventions for describing and documenting recurring design decisions within a given context, in software design & engineering. • A problem/solution pair given a standard name. • A pattern is documented using a standard format which includes a sample UML diagram of a typical solution. Example - Adapter Pattern • Convert the interface of a class into another interface clients expect. • Adapter lets classes work together that couldn't otherwise because of incompatible interfaces. Adapter - two solutions Adapter comes in two variants; one making use of delegation: and one based on multiple inheritance Design Patterns Book The "Bible" of Design Patterns Pattern Format • • • • • • • Pattern templates typically contain: Name Intent / Motivation Problem Context & Forces Solution Consequences To Record Experience... Anecdote - working alone... To Share Experience... Personally I think Patterns are • Share and document experience • Great as a vocabulary between programmers and design tool • Like problem / solution pairs • Just a name for a new „thick/non-obvious‟ concept? A „distinction‟. • Later patterns become common terms. Commercial Projects Educational Reasoning Software Payroll System War Game Reason 2 - Melb University • • • • Mentor in Delphi & OO Patterns where possible Model - „cauldron of creation‟. Composite. Command, Template, Strategy for persistence, Adaptor incl. delegation via a pointer “this is an important idiom” • Model View Controller variation MGM. Hooking up a standard Windows GUI treeview to model. Reason 2 - UML There are several design patterns in this UML diagram. P.S. In later years I became interested in how to explicitly represent patterns in UML diagrams.. Reason!Able www.goreason.com Game - 2D wargame • • • • • • Python SDL graphics (pyGame) Single and Multiplayer over internet Game AI Lots of pieces Moving Scrolling map Game - Preparation • Starting a new project in a new domain - I wanted to know what best practices were. • “Game patterns” on the web documented best practices, tips and tricks and useful rules of thumb and mini designs. • Melb Patterns Group presentation • Patterns used so far - MVC, Façade, Singleton, MGM, Mediator, RM, TI, Null Object, Adaptor, Strategy, Observer, State. Game Patterns as UML Game so far Game Gems & AI Wisdom book • Patterns vs. “Gems” • Patterns vs. “Problem / Solution pairs” • Still talk about forces and consequences and trade-offs, though not as formal section headings. • Some sections not strictly suited to being a pattern, instead they talk about optimisations or more specific issues. Payroll System • Delphi project • Experienced content expert • Was a payroll patterns paper at KoalaPlop 2002 • See also “Business Modelling in UML” by Eriksson & Penker - “Business Patterns at Work”. • Transformation Interface Pattern (Gui and DB versions) Australian Patterns Conference Venue The Country Place Conference Centre Location: The Dandenongs International visitors Patterns I have written for the conference • Model Gui Mediator • Relationship Manager • Transformation Interface See www.andypatterns.com Plop Conference Proceedings Links • KoalaPLoP is hosted in Melbourne http://www.mcs.vuw.ac.nz/~kplop • Melbourne Patterns Group http://www.melbournepatterns.org