Рисунок 10 Диаграмма классов для шаблона «Прототип»
Исходный код:
public abstract class Prototype
{
public abstract Prototype Clone();
}
public class Prototype1 : Prototype
{
private int _value;
public override Prototype Clone()
{
Prototype1 prototype = new Prototype1();
prototype._value = this._value;
return prototype;
}
}
public class Prototype2 : Prototype
{
private string _name;
public override Prototype Clone()
{
Prototype2 prototype = new Prototype2();
prototype._name = this._name;
return prototype;
}
}
public class Client
{
Prototype _prototype;
public void Operation(Prototype parPrototype)
{
_prototype = parPrototype.Clone();
}
}
Для порождения объекта некоторого типа в системе должен существовать его прототип. Прототип представляет собой объект того же типа, единственным назначением которого является создание подобных ему объектов. Обычно для удобства все существующие в системе прототипы организуются в специальные коллекции-хранилища или реестры прототипов. Реестр прототипов позволяет добавлять или удалять прототип, а также создавать объект по идентификатору типа. Именно операции динамического добавления и удаления прототипов в хранилище обеспечивают дополнительную гибкость системе, позволяя управлять процессом создания новых объектов.
Пример реализации шаблона «Прототип»
Приведем реализацию шаблона «Прототип» на примере построения армий.
В примере будут показаны два варианта реализации шаблона:
Достарыңызбен бөлісу: |