• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar

Abhishek Tanwar

I build web & mobile experiences

  • HOME
  • BLOG
  • CONTACT ME
  • DISCLAIMER & COPYRIGHTS
You are here: Home / Tips & Tricks / Creational Pattern | Prototype

Creational Pattern | Prototype

November 24, 2013 by Abhishek Tanwar

I call this pattern the Dolly pattern. I am not sure if you remember, Dolly was the first sheep to be cloned at least in the news. The key to solving the problem of creating objects which is very expensive from resource point of view, is cloning.

This pattern is based on that only. So by now, you would have guessed how this pattern is different from the other Creational patterns. This pattern doesn’t create them, rather it clones.

So next question is when do we use this pattern. Below are some answers to that.

  • If the cost of creating the object is expensive or complicated
  • Minimizing the number of classes for an application
  • Runtime addition and deletion of objects is required
  • Similar new objects are required

Below is how a typical prototype pattern is organized.

image

Now is raining here @ Seoul, so lets see an example to that itself.

I have created the base prototype as “Day” and then two concrete prototypes as “RainyDay” and “Sunnyday”.

Base Prototype defines 3 plain attributes – Id, weatherType, temperature and accordingly getters and setters for the same. For the ease of having a simple example, I have defined an abstract method for setting the object properties in base prototype “setDefault” which will be set by individual days.

The key points or method in the base prototype to note are:

1. It implements “Cloneable” interface.
2. It overrides “clone” method.

Below is a snippet from the same:

image

RainyDay and SunnyDay just extends the “Day” and then overrides the “setDefault” to set default values.

Now in effective Prototype pattern, there is concept which is called “caching of objects”. To avoid creating unnecessary objects. Hence I created a new class – “DayCache” which stores already the objects to be created in their basic states.

 

image

Once you are done with this setup, you just need to have the client use the Day cache and get the objects or create new via the same technique.

Sample Client invocation:

image

Hope you like the explanation and the concept!

Share this:

  • Facebook
  • X

Like this:

Like Loading...

Filed Under: Tips & Tricks Tagged With: Design Patterns, prototype design patter

Primary Sidebar

  • Behance
  • Email
  • Facebook
  • GitHub
  • LinkedIn

Popular Posts

How To Integrate React in JSP Application
SaaS, PaaS, IaaS
XQuery highlighting in Notepad++
Standard Design Patterns – Applied to JAVA
XQDT Installation on Eclipse JUNO

Categories

  • Building APIs
  • Building Mobile Apps
  • Building Web Apps
  • Coding Challenges
  • Extensions
  • Fullstack
  • Patterns
  • Tips & Tricks
  • Uncategorized
  • VSCode

Tags

2022 vscode extensions Abstract Factory alienware amazing vscode extensions apple challenges coding coding-challenges Design Patterns dota2 dota2 items dynamic web service call dynamic webservice invocation enterprise integration express flex helpful vscode extensions how to implement mfa in nodejs increasing productivity using vscode integration pattern macro message channel message endpoint message pattern message router message translator messaging mfa offline action processing offline actions in struts pipes and filters PRG in struts react Steam struts System Emulator threads in struts utilities vscode vscode customization vscode extensions vscode productivity extensions xquery xquery 1.0 xquery design principles

Recent Posts

  • 15+ VSCode Extensions To Improve Your Productivity
  • Productivity and Quality Extensions for ReactJS in VSCode..
  • My goto VSCode plugins for 2022…
  • How to enable MFA for your application in Node.JS?
  • Structuring Express Application – How I do it?

Categories

  • Building APIs (8)
  • Building Mobile Apps (1)
  • Building Web Apps (7)
  • Coding Challenges (3)
  • Extensions (1)
  • Fullstack (6)
  • Patterns (8)
  • Tips & Tricks (41)
  • Uncategorized (43)
  • VSCode (2)

Tags

2022 vscode extensions Abstract Factory alienware amazing vscode extensions apple challenges coding coding-challenges Design Patterns dota2 dota2 items dynamic web service call dynamic webservice invocation enterprise integration express flex helpful vscode extensions how to implement mfa in nodejs increasing productivity using vscode integration pattern macro message channel message endpoint message pattern message router message translator messaging mfa offline action processing offline actions in struts pipes and filters PRG in struts react Steam struts System Emulator threads in struts utilities vscode vscode customization vscode extensions vscode productivity extensions xquery xquery 1.0 xquery design principles

Archives

  • August 2023 (1)
  • March 2022 (1)
  • February 2022 (1)
  • November 2020 (1)
  • April 2020 (2)
  • May 2019 (1)
  • April 2019 (1)
  • March 2019 (1)
  • December 2018 (1)
  • July 2018 (4)
  • June 2018 (3)
  • March 2018 (1)
  • May 2016 (1)
  • December 2015 (1)
  • May 2015 (1)
  • April 2015 (2)
  • March 2015 (1)
  • December 2014 (2)
  • November 2014 (2)
  • October 2014 (1)
  • August 2014 (2)
  • July 2014 (1)
  • April 2014 (1)
  • March 2014 (1)
  • February 2014 (2)
  • January 2014 (1)
  • December 2013 (4)
  • November 2013 (4)
  • October 2013 (3)
  • September 2013 (4)
  • August 2013 (2)
  • July 2013 (5)
  • June 2013 (9)
  • May 2013 (6)
  • April 2013 (2)
  • March 2013 (2)
  • January 2013 (1)
  • November 2012 (2)
  • HOME
  • BLOG
  • CONTACT ME
  • DISCLAIMER & COPYRIGHTS

Copyright © 2025

%d