Design Pattern Prototype
Author:
Vladislav Akulich
QA automation
Coherent Solutions
Minsk 2014
1
Overview
Prototype is a creational pattern.
This pattern encapsulate the knowledge
about which classes a system users, but
they hide the details of how the instances
of these classes are created and put
together.
2
Intent
Specify the kind of objects to create using
a prototypical instance, and create new objects
by copying this prototype.
3
Applicability
4
• When the classes to instance are
specified at run-time, for example, by
dynamic loading
• To avoid building a class hierarchy of
factories that parallels the class
hierarchy of products
• When instance of a class can have one
of only a few different combinations of
state.
UML Diagram
5
Participant
• Prototype
–Declares an interface for cloning itself
• Concrete Prototype
–Implements an operation for cloning itself
• Client
–Creates a new object by asking a prototype
to clone itself
6
Consequences
• Adding and removing products at run-time
• Specifying new objects by varying values
• Specifying new objects by varying structure
• Reduced subclassing
• Configuring an application with classes
dynamically
7
Copy options
• Deep Copy (implementation in user
code), but in some languages exist
functions which do it
• Simple object clone (standard
function MemberwiseClone())
8
Simple Copy
• C#
• Ruby
9
Deep Copy
C# Ruby
10
Related Patterns
Prototype and Abstract Factory are
competing patterns. They can also be used
together, however. An Abstract Factory might
store a set prototypes from which to clone and
return product objects.
Designs that make heavy use of the
Composite and Decorator patterns often can
benefit from Prototype as well.
11
Code example
Simple projects on:
• C#
• Ruby
12
Useful books
• C# 3.0 Design Patterns
• Gang of Four Design Patterns 4.0
• Code Complete Second Edition By Steve
Mcconnell
13
Useful links
• Ruby Best Practices:
http://blog.rubybestpractices.com/posts/gregory/059-
issue-25-creational-design-patterns.html
• Prototype design pattern C++ example:
http://www.ccplusplus.com/2012/01/prototype-design-
pattern-c-example.html
• Wikipedia:
http://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D1
%82%D0%BE%D1%82%D0%B8%D0%BF_(%D1%88%D0%B0
%D0%B1%D0%BB%D0%BE%D0%BD_%D0%BF%D1%80%D0
%BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%BE%
D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)
14
Thanks
Vladislav Akulich
ISsoft QA Engineer
VladislavAkulich@coherentsolutions.com
ISsoft Solutions
www.issoft.by

Prototype presentation

  • 1.
    Design Pattern Prototype Author: VladislavAkulich QA automation Coherent Solutions Minsk 2014 1
  • 2.
    Overview Prototype is acreational pattern. This pattern encapsulate the knowledge about which classes a system users, but they hide the details of how the instances of these classes are created and put together. 2
  • 3.
    Intent Specify the kindof objects to create using a prototypical instance, and create new objects by copying this prototype. 3
  • 4.
    Applicability 4 • When theclasses to instance are specified at run-time, for example, by dynamic loading • To avoid building a class hierarchy of factories that parallels the class hierarchy of products • When instance of a class can have one of only a few different combinations of state.
  • 5.
  • 6.
    Participant • Prototype –Declares aninterface for cloning itself • Concrete Prototype –Implements an operation for cloning itself • Client –Creates a new object by asking a prototype to clone itself 6
  • 7.
    Consequences • Adding andremoving products at run-time • Specifying new objects by varying values • Specifying new objects by varying structure • Reduced subclassing • Configuring an application with classes dynamically 7
  • 8.
    Copy options • DeepCopy (implementation in user code), but in some languages exist functions which do it • Simple object clone (standard function MemberwiseClone()) 8
  • 9.
  • 10.
  • 11.
    Related Patterns Prototype andAbstract Factory are competing patterns. They can also be used together, however. An Abstract Factory might store a set prototypes from which to clone and return product objects. Designs that make heavy use of the Composite and Decorator patterns often can benefit from Prototype as well. 11
  • 12.
    Code example Simple projectson: • C# • Ruby 12
  • 13.
    Useful books • C#3.0 Design Patterns • Gang of Four Design Patterns 4.0 • Code Complete Second Edition By Steve Mcconnell 13
  • 14.
    Useful links • RubyBest Practices: http://blog.rubybestpractices.com/posts/gregory/059- issue-25-creational-design-patterns.html • Prototype design pattern C++ example: http://www.ccplusplus.com/2012/01/prototype-design- pattern-c-example.html • Wikipedia: http://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D1 %82%D0%BE%D1%82%D0%B8%D0%BF_(%D1%88%D0%B0 %D0%B1%D0%BB%D0%BE%D0%BD_%D0%BF%D1%80%D0 %BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%BE% D0%B2%D0%B0%D0%BD%D0%B8%D1%8F) 14
  • 15.
    Thanks Vladislav Akulich ISsoft QAEngineer VladislavAkulich@coherentsolutions.com ISsoft Solutions www.issoft.by