2075 / C# / Шаблони / Прототип (Prototype)
Інколи клонувати об'єкт і змінити в ньому один параметр є швидшим, за його створення з нуля
Коли потрібно створювати багато схожих об'єктів, можливо в майбутньому будуть додаватися нові полі
Інтерфейс ICloneable – лише поверхнево копіює об'єкти, треба розписувати вручну
Для дуже складних об'єктів можемо використати копіювання через конструктори чи сериалізацію
interface IFigure { IFigure Clone(); string GetInfo(); } class Rectangle : IFigure { int width; int height; public Rectangle(int w, int h) { width = w; height = h; } public IFigure Clone() { return new Rectangle(this.width, this.height); } public string GetInfo() { return "Rectangle: h=" + height + ", w=" + width; } } static void Main(string[] args) { IFigure figure = new Rectangle(30, 40); IFigure clonedFigure = figure.Clone(); Console.WriteLine(figure.GetInfo()); Console.WriteLine(clonedFigure.GetInfo()); Console.ReadKey(); }
Rectangle: h=40, w=30
Rectangle: h=40, w=30
Rectangle: h=40, w=30