Порождающие шаблоны проектирования


Рисунок 10  Диаграмма классов для шаблона «Прототип»



Pdf көрінісі
бет11/15
Дата16.10.2022
өлшемі0,66 Mb.
#43481
1   ...   7   8   9   10   11   12   13   14   15
Байланысты:
Creational Patterns

Рисунок 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(); 


Для порождения объекта некоторого типа в системе должен существовать его прототип. Прототип 
представляет собой объект того же типа, единственным назначением которого является создание 
подобных ему объектов. Обычно для удобства все существующие в системе прототипы 
организуются в специальные коллекции-хранилища или реестры прототипов. Реестр прототипов 
позволяет добавлять или удалять прототип, а также создавать объект по идентификатору типа. 
Именно операции динамического добавления и удаления прототипов в хранилище обеспечивают 
дополнительную гибкость системе, позволяя управлять процессом создания новых объектов. 


Пример реализации шаблона «Прототип» 
Приведем реализацию шаблона «Прототип» на примере построения армий. 
В примере будут показаны два варианта реализации шаблона: 
• В виде обобщенного конструктора на основе прототипов, когда в полиморфном базовом 
классе Prototype определяется статический метод, предназначенный для создания 
объектов. При этом в качестве параметра в этот метод должен передаваться 
идентификатор типа создаваемого объекта. 
• На базе специально выделенного класса-фабрики. 


Достарыңызбен бөлісу:
1   ...   7   8   9   10   11   12   13   14   15




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет