Presentation is loading. Please wait.

Presentation is loading. Please wait.

Design Patterns Trends and Case Study John Hurst June 2005.

Similar presentations


Presentation on theme: "Design Patterns Trends and Case Study John Hurst June 2005."— Presentation transcript:

1 Design Patterns Trends and Case Study John Hurst June 2005

2 Overview Software Patterns Design Patterns Topics Case Study / Examples

3 Introduction Christopher Alexander –A Pattern Language: Towns, Buildings, Construction (1977) –A Timeless Way of Building (1979) “Gang of Four” (Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides) –Design Patterns (1995) Buschmann et al –Pattern Oriented Software Construction (1996)

4 Key Idea A Software Pattern is: –A solution –To a problem –In a context –With consequences A Software Pattern has a name and a vocabulary.

5 Pattern Languages Intent Also Known As Motivation Applicability Structure Participants Collaborations Consequences Implementation Known Uses Related Patterns

6 OO Design Principles Code to interfaces Prefer composition to inheritance Encapsulate what varies

7 Benefits Improves thinking about OO design –New designs –Existing designs –Helps us realise the benefits of OO Reuse of solutions to common problems –Catalogs Communication tool –Common vocabulary

8 Example: Iterator Intent: –Provide a way to access the elements of an aggregate object sequentially without exposing its underlying representation

9 Example: Decorator Intent: –Attach additional responsibilities to an object dynamically. Decorators provide a flexible alternative to subclassing for extending functionality.

10 Application of Decorator Apache Commons DBCP (Database Connection Pooling)

11 Patterns Landscape Architectural Patterns Analysis Patterns Design Patterns

12 “Platform Patterns” J2EE Core Patterns MS Building Blocks Contrast with PEAA

13 Antipatterns Examples –Big Ball Of Mud –Copy and Paste Programming –Magic Container –Tower of Voodoo

14 Broken Patterns Double checked locking “Deprecated” Patterns: –Factory Method (due to confusion over what it means) –Bridge –Flyweight –Interpreter

15 Specialised Fields Real-time Concurrency Enterprise Messaging Analysis

16 Refactoring to Patterns Remove duplicate code Simplify logic Communicate intention Increase flexibility

17 Pattern Happy

18 Patterns with Programming Languages Strategy –C++ templates: static type checking –Java interfaces and objects: runtime configuration –Ruby/Smalltalk blocks: idiomatic usage

19 Case Study: HHRDM Design Patterns Architectural Patterns Analysis Patterns

20 Design Patterns Abstract Factory Template Method Strategy Façade Proxy

21 Architectural Patterns Layering Data Access Patterns Domain Model Service Façade

22 Analysis Patterns Temporal Patterns –Effectivity –Snapshot –Temporal Object –Temporal Property –Audit Trail –Bitemporal Model

23 References Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides Design Patterns: Elements of Reusable Object-Oriented Software – Addison-Wesley 1995 Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, Michael Stal Pattern-Oriented Software Architecture Wiley 1996 Martin Fowler Patterns of Enterprise Application Architecture – Addison-Wesley 2002 Martin Fowler Refactoring – Addison-Wesley 2000 Martin Fowler Analysis Patterns – Addison Wesley 1996 Gregor Hohpe, Bobby Woolfe Patterns of Enterprise Application Integration – Addison-Wesley 2003 Joshua Kerievsky Refactoring to Patterns – Addison-Wesley 2004 Deepak Alur, John Crupi, Dan Malks Core J2EE Patterns (2 nd Ed) – Addison-Wesley 2003

24 Web Sites Martin Fowler website http://www.martinfowler.com http://www.martinfowler.com Portland Pattern Repository http://c2.com/cgi/wiki http://c2.com/cgi/wiki TheServerSide http://www.theserverside.com http://www.theserverside.com Microsoft Patterns and Practices http://msdn.microsoft.com/architecture /patterns/ http://msdn.microsoft.com/architecture /patterns/

25 Relationships and Similarities ProxyDecorator Many patterns look similar structurally, but have different intent

26 The Agile Manifesto Preferences: –Inidividuals and interactions over processes and tools –Working software over comprehensive documentation –Customer collaboration over contract negotiation –Responding to change over following a plan


Download ppt "Design Patterns Trends and Case Study John Hurst June 2005."

Similar presentations


Ads by Google