• हिंदी (भारत)
    • English (United States)
    • العربية (مصر)
    • Deutsch (Deutschland)
    • Español (España, alfabetización internacional)
    • français (France)
    • italiano (Italia)
    • 日本語 (日本)
    • 한국어 (대한민국)
    • Nederlands (Nederland)
    • polski (Polska)
    • русский (Россия)
    • ไทย (ไทย)
    • Türkçe (Türkiye)
    • Tiếng Việt (Việt Nam)
    • 中文(中华人民共和国)
    • 中文(香港特別行政區)
  • लॉगिन
  • पंजीकृत करें
DotNetAge - Mvc & jQuery CMS
साइडबार छुपाएँ

Prototype


Definition



Specify the kind of objects to create using a prototypical instance, and create new objects by copying this prototype.

UML class diagram





Participants



The classes and/or objects participating in this pattern are:

  • Prototype - declares an interface for cloning itself
  • ConcretePrototype - implements an operation for cloning itself
  • Client - creates a new object by asking a prototype to clone itself

Sample code in C#




///
/// MainApp startup class for Structural
/// Prototype Design Pattern.
///
class MainApp
{
///
/// Entry point into console application.
///
static void Main()
{
// Create two instances and clone each
ConcretePrototype1 p1 = new ConcretePrototype1("I");
ConcretePrototype1 c1 = (ConcretePrototype1)p1.Clone();
Console.WriteLine("Cloned: {0}", c1.Id);

ConcretePrototype2 p2 = new ConcretePrototype2("II");
ConcretePrototype2 c2 = (ConcretePrototype2)p2.Clone();
Console.WriteLine("Cloned: {0}", c2.Id);

// Wait for user
Console.ReadKey();
}
}

///
/// The 'Prototype' abstract class
///
public abstract class Prototype
{

private string _id;

// Constructor
public Prototype(string id)
{
this._id = id;
}

// Gets id
public string Id
{
get { return _id; }
}

public abstract Prototype Clone();
}


///
/// A 'ConcretePrototype' class
///
public class ConcretePrototype1 : Prototype
{

// Constructor
public ConcretePrototype1(string id) : base(id)
{
}

// Returns a shallow copy
public override Prototype Clone()
{
return (Prototype)this.MemberwiseClone();
}
}

///
/// A 'ConcretePrototype' class
///
public class ConcretePrototype2 : Prototype
{

// Constructor
public ConcretePrototype2(string id) : base(id)
{
}

// Returns a shallow copy
public override Prototype Clone()
{
return (Prototype)this.MemberwiseClone();
}
}

 


    Average:
  • पुस्तकें
    (628)
  • कहते हैं:
को साझा करें:

Tag cloud

Anything in here will be replaced on browsers that support the canvas element