About Patterns, Principles and Practices of Object Oriented Design Design Patterns 26/11/08 Author: Frederico Gonçalves
Agenda What are Design Patterns Principles Behind Patterns Why Patterns How/When to use Patterns Patterns in the Mobile Domain Conclusion References 26/11/08 Author: Frederico Gonçalves
Agenda What are Design Patterns Principles Behind Patterns Why Patterns How/When to use Patterns Patterns in the Mobile Domain Conclusion References 26/11/08 Author: Frederico Gonçalves
The Origins of Patterns Christopher Alexander, Professor of Architecture at the University of California, Berkeley, director of the Center for Environmental Structure Alexander, with his colleagues, published a series of books: The Timeless Way of Building (1979)‏ Presents a new theory of architecture, building and planning “ There is one timeless way of building. It is a thousand years old, and the same today as it has ever been…” A Pattern Language (1977)‏ Provides general rules, methods and practices  for constructing practical, safe and attractive designs at every scale. 26/11/08 Author: Frederico Gonçalves
GoF – Object Oriented Patterns Gamma, Erich; Helm, Richard; Johnson, Ralph & Vlissides, John (1995).  Design Patterns, Elements of Reusable Object-Oriented Software . Addison-Wesley, Boston. Referred commonly as Gang of Four or GoF Used the concept  Design Pattern  in a Object-Oriented perspective 26/11/08 Author: Frederico Gonçalves
Pattern’s Definitions “ Each pattern describes a  problem which occurs over and over again  in our  environment , and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice.”  Christopher Alexander “ A design pattern systematically names, motivates and explains a general design that addresses a  recurring design problem  in  object-oriented systems .” GoF 26/11/08 Author: Frederico Gonçalves
GoF Design Patterns The design patterns are  descriptions of communicating objects and classes  that are  customized to solve a general design problem  in a  particular context It describes the  problem , the  solution ,  when  to apply the solution, and its  consequences . It also gives  implementation   hints  and examples.  26/11/08 Author: Frederico Gonçalves Design Patterns  are proven and generalized solutions to recurring problems in Object Oriented design
GoF Design Patterns In general, a pattern has four essential elements: The  pattern name  which in a word or two provides a handle and vocabulary for discussing and using the pattern. The  problem  which explains the problem and the context in which the pattern is applicable. Sometimes a list of conditions that must be met to apply the pattern is included. The  solution  which describes the elements of the pattern, their relationships, responsibilities, and collaborations. The solution is abstract, like a template. Though sometimes a concrete example in a certain programming language may be included. The  consequences  which are the results and trade-offs of applying the pattern. These are critical for evaluating alternatives and understanding the costs and benefits of applying the pattern. 26/11/08 Author: Frederico Gonçalves
GoF Patterns Catalogue 26/11/08 Author: Frederico Gonçalves Purpose Creational Structural Behavioral Scope Class Factory Method Adapter (class)‏ Interpreter Template Method Object Abstract Factory Builder Prototype Singleton Adapter (Object)‏ Bridge Composite Decorator Facade Flyweight Proxy Chain of Responsibility Command Iterator Mediator Memento Observer State Strategy Visitor
Agenda What are Design Patterns Principles Behind Patterns Why Patterns How/When to use Patterns Patterns in the Mobile Domain Conclusion References 26/11/08 Author: Frederico Gonçalves
Principles Behind Patterns Encapsulates what varies Regardless of application domain, technology or programming language, there is one constant in software development To design the system so that it's robust to such changes, you must consider how the system might need to change over its lifetime Encapsulate what varies, so it can be changed (extended or modified) without affecting the whole system
Principles Behind Patterns Programming to interfaces, not to implementations Direct class referencing leads to tight coupled objects that are hard to reuse since they depend on each other Programming to interfaces reduces implementation dependencies re-enforcing reuse Clients remain unaware of the classes implementing the objects they use
Principles Behind Patterns Strive to use objects composition over classes inheritance Class inheritance is the most common design to reuse functionality However it's not possible to change the implementation inherited from the parent class at compile time. The subclass is bound-up to the superclass implementation (white-reuse)‏ Object Composition is another way to promote reuse It's possible to change the reused functionality at run time  Reduces implementation dependencies (black-box reuse)‏
Model for first Sprint! Principles Behind Patterns 26/11/08 Author: Frederico Gonçalves
Principles Behind Patterns 26/11/08 Author: Frederico Gonçalves New requirement: Knights and Orcs shall attack with a sword, Elfos shall use arrows.
Principles Behind Patterns 26/11/08 Author: Frederico Gonçalves Overwrite attack
Principles Behind Patterns 26/11/08 Author: Frederico Gonçalves But also need to overwrite method with all implementation for future Characteres    Bad code reuse! Overwrite attack
Principles Behind Patterns 26/11/08 Author: Frederico Gonçalves Create arrowAtack()
Principles Behind Patterns 26/11/08 Author: Frederico Gonçalves This leads to all characteres  Inheriting a behavior they may not use    Bad reuse! Create arrowAtack()
Lets see how we could apply the principles to solve the problem Encapsulate what varies Attack behavior could be implemented by a separate class Program to interfaces Generalize the behaviors to an interface so clients can refer to them in the same way Favor composition over inheritance Use composition instead of inheritance for the attack method Principles Behind Patterns 26/11/08 Author: Frederico Gonçalves
Principles Behind Patterns 26/11/08 Author: Frederico Gonçalves Flexible design  to include new behaviours, apply them to different characters and change it at run time
Principles Behind Patterns 26/11/08 Author: Frederico Gonçalves Strategy  captures design principles to create a flexible solution for changing algorithms problems
Principles Behind Patterns 26/11/08 Author: Frederico Gonçalves Strategy  captures design principles to create a flexible solution for changing algorithms problems Apply the patterns with criteria,  extra complexity shall add value to your solution
Principles Behind Patterns These and other principles are a common to other design patterns  26/11/08 Author: Frederico Gonçalves
Agenda What are Design Patterns Principles Behind Patterns Why Patterns How/When to use Patterns Patterns in the Mobile Domain Conclusion References 26/11/08 Author: Frederico Gonçalves
Why Patterns Reuse effective design solutions Create high quality products strengthening the use of good practices and principles Provides a common vocabulary of design concepts to developers Documentation and learning tool 26/11/08 Author: Frederico Gonçalves Patterns  are proven solutions that can be reused to solve common problems without re-inventing the wheel.
Agenda What are Design Patterns Principles Behind Patterns Why Patterns How/When to use Patterns Patterns in the Mobile Domain Conclusion References 26/11/08 Author: Frederico Gonçalves
The Design Problem Designs intends to be: more flexible, extensible, portable, modular, reusable, elegant and understandable... Finding the appropriated objects to achieve that is not easy Many conflicting factors come into play: encapsulation, granularity, dependency, flexibility, performance, evolution, reusability…  How to decompose the system into the right objects? Design Patterns help to solve the problem 26/11/08 Author: Frederico Gonçalves
When to Apply Patterns 26/11/08 Author: Frederico Gonçalves Analysis  is the identification of essential system characteristics, concepts and capabilities to create an initial design
When to Apply Patterns 26/11/08 Author: Frederico Gonçalves Analysis object model  is a composition of objects that reflect your business. However the solution is not optimized Analysis  is the identification of essential system characteristics, concepts and capabilities to create an initial design
Performance Average Worst-case Predictability Resource usage Robustness Thread safety Minimization of resources (space)‏ Minimization of resources (time)‏ Changes, Extensibility & evolution Reusability Maintainability Time-to-market Standard conformance Identify your Design Criteria 26/11/08 Author: Frederico Gonçalves Design objectives and priorities  shall drive your design optimization. They are essential for a good design.
When to Apply Patterns 26/11/08 Author: Frederico Gonçalves Design  is the selection of one particular solution which optimizes the set of design criteria with respect to the relative importance of each
When to Apply Patterns 26/11/08 Author: Frederico Gonçalves In the Design  we should optimize the Analysis Model according to design criteria and using design patterns Design  is the selection of one particular solution which optimizes the set of design criteria with respect to the relative importance of each
When to Apply Patterns 26/11/08 Author: Frederico Gonçalves In the Design  we should optimize the Analysis Model according to design criteria and using design patterns Patterns  help to identify less obvious abstractions (which are rarely found at first modelling) and the objects that can capture them Design  is the selection of one particular solution which optimizes the set of design criteria with respect to the relative importance of each
Try to select patterns that match your design problem (model and design criteria)‏ Example, the Strategy pattern describes how to implement interchangeable families of algorithms.  How to Apply Patterns 26/11/08 Author: Frederico Gonçalves
Selecting a Pattern Consider how design patterns solve design problems and the design principles associated to the patterns Scan Intent sections.  Read through each pattern's intent to find one or more that sound relevant to your problem.  Study how patterns interrelate.  relationships between design patterns help direct you to the right pattern or group of patterns.  Study patterns of like purpose.  The patterns can be classified according to their purpose (creational patterns, structural patterns and behavioral patterns).  Try to understand their similarities and differences Consider what should be variable in your design.  Consider what you want to be  able  to change without redesign.  26/11/08 Author: Frederico Gonçalves The best way to use patterns  is to load your brain with them and then recognize places in your designs and existing applications where to apply them.
How/When to Apply Patterns Construct the initial model Identify the design criteria Rank the design criteria in order of importance Identify design patterns that optimize the system or collaboration for the critical design criteria at the expense of the less important ones 26/11/08 Author: Frederico Gonçalves Refactoring  your initial design to identify patterns and better solutions is a common practice.
Agenda What are Design Patterns Principles Behind Patterns Why Patterns How/When to use Patterns Patterns in the Mobile Domain Conclusion References 26/11/08 Author: Frederico Gonçalves
Patterns in the Mobile Domain MVC recommended for J2ME. Also other patterns around: Observer, Abstract Factory... MODPA (Mobile Design Patterns and Architectures)‏ Cooperation project carried out by Nokia and 5 other companies from 2005 upto 2006 The project lists patterns with reported use in mobile environment The report re-enforces the use of traditional Design Patterns (GoF) and lists a few specific Patterns for the mobile domain (interactive design patterns)‏ 26/11/08 Author: Frederico Gonçalves
Architectural patterns: Model-View-Controller (MVC)‏ Client-server Microkernel Abstract factory Active object General: State pattern Observer  Adapter  Factory method Singleton Template method Façade pattern Interactive content development (User Interface design):  Cascading menu Wizard dialog Pagination Slide Show Distribution patterns: Remote façade Data Transfer Object Remote proxy Resource management: Caching Eager Acquisition Lazy Acquisition Virtual component Synchronization Synchronization  Patterns for point-to-point communications:  Communicator Connection factory Channels with configurable protocols Idioms: Two-phase construction Cleanup stack Thin template MODPA Patterns 26/11/08 Author: Frederico Gonçalves
One-Function Pattern “ Identification of Design Patterns for Mobile Services with J2ME”; J. Narsson et al.; 2008 Proposes the use of the One-Function Design Pattern to address memory constraints The One-Function Pattern was used in two J2ME applications to prove its reusability and reliability 26/11/08 Author: Frederico Gonçalves New design patterns shall be used carefully,  they may refer to solutions that lack practical validation.
Agenda What are Design Patterns Principles Behind Patterns Why Patterns How/When to use Patterns Patterns in the Mobile Domain Conclusion References 26/11/08 Author: Frederico Gonçalves
Conclusion Design Patterns are generalized solutions for common problems Understanding design principles behind design patterns help understand how they work and how to use them in a particular problem Identifying your design objectives and priorities is essential for good design Patterns are not the “silver bullet” but are an important tool for designers practices 26/11/08 Author: Frederico Gonçalves
Agenda What are Design Patterns Principles Behind Patterns Why Patterns How/When to use Patterns Patterns in the Mobile Domain Conclusion References 26/11/08 Author: Frederico Gonçalves
References “ Design Patterns: Elements of Reusable Object Oriented Software”;  1995; Gamma et al. “ Head First, Design Patterns”; 2004; Freeman Eric et al. MODPA http://www.titu.jyu.fi/modpa/index.htm   “ Identification of Design Patterns for Mobile Services with J2ME”; J. Narsson et al.; 2008 “ On Patterns and Pattern Languages”; Buschmann, Henney 26/11/08 Author: Frederico Gonçalves
? Questions 26/11/08 Author: Frederico Gonçalves

Design Patterns

  • 1.
    About Patterns, Principlesand Practices of Object Oriented Design Design Patterns 26/11/08 Author: Frederico Gonçalves
  • 2.
    Agenda What areDesign Patterns Principles Behind Patterns Why Patterns How/When to use Patterns Patterns in the Mobile Domain Conclusion References 26/11/08 Author: Frederico Gonçalves
  • 3.
    Agenda What areDesign Patterns Principles Behind Patterns Why Patterns How/When to use Patterns Patterns in the Mobile Domain Conclusion References 26/11/08 Author: Frederico Gonçalves
  • 4.
    The Origins ofPatterns Christopher Alexander, Professor of Architecture at the University of California, Berkeley, director of the Center for Environmental Structure Alexander, with his colleagues, published a series of books: The Timeless Way of Building (1979)‏ Presents a new theory of architecture, building and planning “ There is one timeless way of building. It is a thousand years old, and the same today as it has ever been…” A Pattern Language (1977)‏ Provides general rules, methods and practices for constructing practical, safe and attractive designs at every scale. 26/11/08 Author: Frederico Gonçalves
  • 5.
    GoF – ObjectOriented Patterns Gamma, Erich; Helm, Richard; Johnson, Ralph & Vlissides, John (1995). Design Patterns, Elements of Reusable Object-Oriented Software . Addison-Wesley, Boston. Referred commonly as Gang of Four or GoF Used the concept Design Pattern in a Object-Oriented perspective 26/11/08 Author: Frederico Gonçalves
  • 6.
    Pattern’s Definitions “Each pattern describes a problem which occurs over and over again in our environment , and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice.” Christopher Alexander “ A design pattern systematically names, motivates and explains a general design that addresses a recurring design problem in object-oriented systems .” GoF 26/11/08 Author: Frederico Gonçalves
  • 7.
    GoF Design PatternsThe design patterns are descriptions of communicating objects and classes that are customized to solve a general design problem in a particular context It describes the problem , the solution , when to apply the solution, and its consequences . It also gives implementation hints and examples. 26/11/08 Author: Frederico Gonçalves Design Patterns are proven and generalized solutions to recurring problems in Object Oriented design
  • 8.
    GoF Design PatternsIn general, a pattern has four essential elements: The pattern name which in a word or two provides a handle and vocabulary for discussing and using the pattern. The problem which explains the problem and the context in which the pattern is applicable. Sometimes a list of conditions that must be met to apply the pattern is included. The solution which describes the elements of the pattern, their relationships, responsibilities, and collaborations. The solution is abstract, like a template. Though sometimes a concrete example in a certain programming language may be included. The consequences which are the results and trade-offs of applying the pattern. These are critical for evaluating alternatives and understanding the costs and benefits of applying the pattern. 26/11/08 Author: Frederico Gonçalves
  • 9.
    GoF Patterns Catalogue26/11/08 Author: Frederico Gonçalves Purpose Creational Structural Behavioral Scope Class Factory Method Adapter (class)‏ Interpreter Template Method Object Abstract Factory Builder Prototype Singleton Adapter (Object)‏ Bridge Composite Decorator Facade Flyweight Proxy Chain of Responsibility Command Iterator Mediator Memento Observer State Strategy Visitor
  • 10.
    Agenda What areDesign Patterns Principles Behind Patterns Why Patterns How/When to use Patterns Patterns in the Mobile Domain Conclusion References 26/11/08 Author: Frederico Gonçalves
  • 11.
    Principles Behind PatternsEncapsulates what varies Regardless of application domain, technology or programming language, there is one constant in software development To design the system so that it's robust to such changes, you must consider how the system might need to change over its lifetime Encapsulate what varies, so it can be changed (extended or modified) without affecting the whole system
  • 12.
    Principles Behind PatternsProgramming to interfaces, not to implementations Direct class referencing leads to tight coupled objects that are hard to reuse since they depend on each other Programming to interfaces reduces implementation dependencies re-enforcing reuse Clients remain unaware of the classes implementing the objects they use
  • 13.
    Principles Behind PatternsStrive to use objects composition over classes inheritance Class inheritance is the most common design to reuse functionality However it's not possible to change the implementation inherited from the parent class at compile time. The subclass is bound-up to the superclass implementation (white-reuse)‏ Object Composition is another way to promote reuse It's possible to change the reused functionality at run time Reduces implementation dependencies (black-box reuse)‏
  • 14.
    Model for firstSprint! Principles Behind Patterns 26/11/08 Author: Frederico Gonçalves
  • 15.
    Principles Behind Patterns26/11/08 Author: Frederico Gonçalves New requirement: Knights and Orcs shall attack with a sword, Elfos shall use arrows.
  • 16.
    Principles Behind Patterns26/11/08 Author: Frederico Gonçalves Overwrite attack
  • 17.
    Principles Behind Patterns26/11/08 Author: Frederico Gonçalves But also need to overwrite method with all implementation for future Characteres  Bad code reuse! Overwrite attack
  • 18.
    Principles Behind Patterns26/11/08 Author: Frederico Gonçalves Create arrowAtack()
  • 19.
    Principles Behind Patterns26/11/08 Author: Frederico Gonçalves This leads to all characteres Inheriting a behavior they may not use  Bad reuse! Create arrowAtack()
  • 20.
    Lets see howwe could apply the principles to solve the problem Encapsulate what varies Attack behavior could be implemented by a separate class Program to interfaces Generalize the behaviors to an interface so clients can refer to them in the same way Favor composition over inheritance Use composition instead of inheritance for the attack method Principles Behind Patterns 26/11/08 Author: Frederico Gonçalves
  • 21.
    Principles Behind Patterns26/11/08 Author: Frederico Gonçalves Flexible design to include new behaviours, apply them to different characters and change it at run time
  • 22.
    Principles Behind Patterns26/11/08 Author: Frederico Gonçalves Strategy captures design principles to create a flexible solution for changing algorithms problems
  • 23.
    Principles Behind Patterns26/11/08 Author: Frederico Gonçalves Strategy captures design principles to create a flexible solution for changing algorithms problems Apply the patterns with criteria, extra complexity shall add value to your solution
  • 24.
    Principles Behind PatternsThese and other principles are a common to other design patterns 26/11/08 Author: Frederico Gonçalves
  • 25.
    Agenda What areDesign Patterns Principles Behind Patterns Why Patterns How/When to use Patterns Patterns in the Mobile Domain Conclusion References 26/11/08 Author: Frederico Gonçalves
  • 26.
    Why Patterns Reuseeffective design solutions Create high quality products strengthening the use of good practices and principles Provides a common vocabulary of design concepts to developers Documentation and learning tool 26/11/08 Author: Frederico Gonçalves Patterns are proven solutions that can be reused to solve common problems without re-inventing the wheel.
  • 27.
    Agenda What areDesign Patterns Principles Behind Patterns Why Patterns How/When to use Patterns Patterns in the Mobile Domain Conclusion References 26/11/08 Author: Frederico Gonçalves
  • 28.
    The Design ProblemDesigns intends to be: more flexible, extensible, portable, modular, reusable, elegant and understandable... Finding the appropriated objects to achieve that is not easy Many conflicting factors come into play: encapsulation, granularity, dependency, flexibility, performance, evolution, reusability… How to decompose the system into the right objects? Design Patterns help to solve the problem 26/11/08 Author: Frederico Gonçalves
  • 29.
    When to ApplyPatterns 26/11/08 Author: Frederico Gonçalves Analysis is the identification of essential system characteristics, concepts and capabilities to create an initial design
  • 30.
    When to ApplyPatterns 26/11/08 Author: Frederico Gonçalves Analysis object model is a composition of objects that reflect your business. However the solution is not optimized Analysis is the identification of essential system characteristics, concepts and capabilities to create an initial design
  • 31.
    Performance Average Worst-casePredictability Resource usage Robustness Thread safety Minimization of resources (space)‏ Minimization of resources (time)‏ Changes, Extensibility & evolution Reusability Maintainability Time-to-market Standard conformance Identify your Design Criteria 26/11/08 Author: Frederico Gonçalves Design objectives and priorities shall drive your design optimization. They are essential for a good design.
  • 32.
    When to ApplyPatterns 26/11/08 Author: Frederico Gonçalves Design is the selection of one particular solution which optimizes the set of design criteria with respect to the relative importance of each
  • 33.
    When to ApplyPatterns 26/11/08 Author: Frederico Gonçalves In the Design we should optimize the Analysis Model according to design criteria and using design patterns Design is the selection of one particular solution which optimizes the set of design criteria with respect to the relative importance of each
  • 34.
    When to ApplyPatterns 26/11/08 Author: Frederico Gonçalves In the Design we should optimize the Analysis Model according to design criteria and using design patterns Patterns help to identify less obvious abstractions (which are rarely found at first modelling) and the objects that can capture them Design is the selection of one particular solution which optimizes the set of design criteria with respect to the relative importance of each
  • 35.
    Try to selectpatterns that match your design problem (model and design criteria)‏ Example, the Strategy pattern describes how to implement interchangeable families of algorithms. How to Apply Patterns 26/11/08 Author: Frederico Gonçalves
  • 36.
    Selecting a PatternConsider how design patterns solve design problems and the design principles associated to the patterns Scan Intent sections. Read through each pattern's intent to find one or more that sound relevant to your problem. Study how patterns interrelate. relationships between design patterns help direct you to the right pattern or group of patterns. Study patterns of like purpose. The patterns can be classified according to their purpose (creational patterns, structural patterns and behavioral patterns). Try to understand their similarities and differences Consider what should be variable in your design. Consider what you want to be able to change without redesign. 26/11/08 Author: Frederico Gonçalves The best way to use patterns is to load your brain with them and then recognize places in your designs and existing applications where to apply them.
  • 37.
    How/When to ApplyPatterns Construct the initial model Identify the design criteria Rank the design criteria in order of importance Identify design patterns that optimize the system or collaboration for the critical design criteria at the expense of the less important ones 26/11/08 Author: Frederico Gonçalves Refactoring your initial design to identify patterns and better solutions is a common practice.
  • 38.
    Agenda What areDesign Patterns Principles Behind Patterns Why Patterns How/When to use Patterns Patterns in the Mobile Domain Conclusion References 26/11/08 Author: Frederico Gonçalves
  • 39.
    Patterns in theMobile Domain MVC recommended for J2ME. Also other patterns around: Observer, Abstract Factory... MODPA (Mobile Design Patterns and Architectures)‏ Cooperation project carried out by Nokia and 5 other companies from 2005 upto 2006 The project lists patterns with reported use in mobile environment The report re-enforces the use of traditional Design Patterns (GoF) and lists a few specific Patterns for the mobile domain (interactive design patterns)‏ 26/11/08 Author: Frederico Gonçalves
  • 40.
    Architectural patterns: Model-View-Controller(MVC)‏ Client-server Microkernel Abstract factory Active object General: State pattern Observer Adapter Factory method Singleton Template method Façade pattern Interactive content development (User Interface design): Cascading menu Wizard dialog Pagination Slide Show Distribution patterns: Remote façade Data Transfer Object Remote proxy Resource management: Caching Eager Acquisition Lazy Acquisition Virtual component Synchronization Synchronization Patterns for point-to-point communications: Communicator Connection factory Channels with configurable protocols Idioms: Two-phase construction Cleanup stack Thin template MODPA Patterns 26/11/08 Author: Frederico Gonçalves
  • 41.
    One-Function Pattern “Identification of Design Patterns for Mobile Services with J2ME”; J. Narsson et al.; 2008 Proposes the use of the One-Function Design Pattern to address memory constraints The One-Function Pattern was used in two J2ME applications to prove its reusability and reliability 26/11/08 Author: Frederico Gonçalves New design patterns shall be used carefully, they may refer to solutions that lack practical validation.
  • 42.
    Agenda What areDesign Patterns Principles Behind Patterns Why Patterns How/When to use Patterns Patterns in the Mobile Domain Conclusion References 26/11/08 Author: Frederico Gonçalves
  • 43.
    Conclusion Design Patternsare generalized solutions for common problems Understanding design principles behind design patterns help understand how they work and how to use them in a particular problem Identifying your design objectives and priorities is essential for good design Patterns are not the “silver bullet” but are an important tool for designers practices 26/11/08 Author: Frederico Gonçalves
  • 44.
    Agenda What areDesign Patterns Principles Behind Patterns Why Patterns How/When to use Patterns Patterns in the Mobile Domain Conclusion References 26/11/08 Author: Frederico Gonçalves
  • 45.
    References “ DesignPatterns: Elements of Reusable Object Oriented Software”; 1995; Gamma et al. “ Head First, Design Patterns”; 2004; Freeman Eric et al. MODPA http://www.titu.jyu.fi/modpa/index.htm “ Identification of Design Patterns for Mobile Services with J2ME”; J. Narsson et al.; 2008 “ On Patterns and Pattern Languages”; Buschmann, Henney 26/11/08 Author: Frederico Gonçalves
  • 46.
    ? Questions 26/11/08Author: Frederico Gonçalves