public PrototypeClientA() { 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); }
public static void Main( string[] args ) { // 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 ); }
void Start( ) { // Create two instances and clone each ConcretePrototype1 p1 = new ConcretePrototype1("I"); ConcretePrototype1 c1 = (ConcretePrototype1)p1.Clone(); Debug.Log("Cloned: " + c1.Id); ConcretePrototype2 p2 = new ConcretePrototype2("II"); ConcretePrototype2 c2 = (ConcretePrototype2)p2.Clone(); Debug.Log("Cloned: " + c2.Id); }
static bool TestPrototypePattern() { Console.WriteLine("TESTING THE PROTOTYPE PATTERN: "); var prototype = new ConcretePrototype1 { Property1 = "A", Property2 = "B", PrototypeDetails = new PrototypeDetails { Details = "'prototype' details" } }; //New instance using the prototype var NewObject = prototype.Clone() as ConcretePrototype1; //Without using Deep copy, the next line whould change the same PrototypeDetails instance //used in 'prototype' and 'NewObject', since both would be using the same reference to this object instance NewObject.PrototypeDetails.Details = "New details for 'NewObject'"; Console.WriteLine(prototype); Console.WriteLine(NewObject); //OUTPUT //Property1: A Property2:B PrototypeDetails:"'prototype' details" //Property1: A Property2:B PrototypeDetails:"New details for 'NewObject'" var prototype2 = new ConcretePrototype2 { Property1 = "X", Property2 = "Y", OtherProperty = "Z", PrototypeDetails = new PrototypeDetails { Details = "'prototype2' details" } }; //New instance using the prototype2 var NewObject2 = prototype2.Clone() as ConcretePrototype2; NewObject2.PrototypeDetails.Details = "New details for 'NewObject2'"; Console.WriteLine(prototype2); Console.WriteLine(NewObject2); //OUTPUT //Property1: X Property2:Y PrototypeDetails:"'prototype2' details" OtherProperty: Z //Property1:X Property2:Y PrototypeDetails:"New details for 'NewObject2'" OtherProperty: Z return(true); }
// 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(); }
//Прототип - Prototype public Run Prototype() { Console.WriteLine("\nPrototype:"); // Create two instances and clone each Patterns.Creational.Prototype.Prototype p1 = new ConcretePrototype1("I"); Patterns.Creational.Prototype.Prototype c1 = p1.Clone(); Console.WriteLine("Cloned: {0}", c1.Id); Patterns.Creational.Prototype.Prototype p2 = new ConcretePrototype2("II"); Patterns.Creational.Prototype.Prototype c2 = p2.Clone(); Console.WriteLine("Cloned: {0}", c2.Id); return(this); }
private void prototypePatternBtn_Click(object sender, RoutedEventArgs e) { ConcretePrototype1 p1 = new ConcretePrototype1(); p1.proto1Field = 10; ConcretePrototype2 p2 = new ConcretePrototype2(); p2.proto2Field = 20; ConcretePrototype1 p11 = (ConcretePrototype1)p1.Clone(); ConcretePrototype2 p22 = (ConcretePrototype2)p2.Clone(); statusBarTB.Text = "proto 1: " + p11.proto1Field + ", proto 2: " + p22.proto2Field; }
public void PrototypePattern_TestCreationOfProtptypicalInstances() { // Arrange const string id1 = "I"; const string id2 = "II"; var concretePrototype1 = new ConcretePrototype1(id1); var concretePrototype2 = new ConcretePrototype2(id2); // Act var clonedConcretePrototype1 = (ConcretePrototype1)concretePrototype1.Clone(); var clonedConcretePrototype2 = (ConcretePrototype2)concretePrototype2.Clone(); // Assert Assert.AreEqual(id1, clonedConcretePrototype1.Id); Assert.AreEqual(id2, clonedConcretePrototype2.Id); }
// "Prototype" // "ConcretePrototype1" public void TestProtoTypePattern() { // Create two instances and clone each var p1 = new ConcretePrototype1("I"); var c1 = (ConcretePrototype1)p1.Clone(); Console.WriteLine("Cloned: {0}", c1.Id); var p2 = new ConcretePrototype2("II"); var c2 = (ConcretePrototype2)p2.Clone(); Console.WriteLine("Cloned: {0}", c2.Id); // Wait for user Console.Read(); }
static void TestSample() { // 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(); }
private void Start() { // Create two instances and clone each ConcretePrototype1 p1 = new ConcretePrototype1("I"); p1.nameNo = "p1"; ConcretePrototype1 c1 = (ConcretePrototype1)p1.Clone(); c1.nameNo = "c1"; Debug.Log("Cloned: " + c1.Id); Debug.Log("NameNo: " + p1.nameNo + " ------- " + c1.nameNo); ConcretePrototype2 p2 = new ConcretePrototype2("II"); ConcretePrototype2 c2 = (ConcretePrototype2)p2.Clone(); Debug.Log("Cloned: " + c2.Id); }
static void Main(string[] args) { ConcretePrototype1 inst1 = new ConcretePrototype1() { Id = 1, Name = "Jon Skeet" }; ConcretePrototype2 inst2 = new ConcretePrototype2() { Id = 2, Name = "Frodo Torbins" }; ConcretePrototype1 copy1 = inst1.Clone(); ConcretePrototype2 copy2 = inst2.Clone(); Console.WriteLine(copy1.Name + " " + copy1.GetType().Name); Console.WriteLine(copy2.Name + " " + copy2.GetType().Name); }
protected ConcretePrototype2(ConcretePrototype2 proto2) : base(proto2) { }