Шаблоны проектирования предоставляют вам способ решения проблем, связанных с разработкой программного обеспечения, с помощью проверенного решения, а шаблоны проектирования делают общение между дизайнерами более эффективным. Поэтому они так важны для программного обеспечения.

В этой статье я объясню шаблон проектирования прототипа и создам базовый пример с использованием C#.

Что такое шаблон проектирования прототипа?

Шаблон проектирования прототипа предусматривает, что наши существующие объекты могут создавать клон, чтобы существующий объект выступал в качестве прототипа и содержал состояние объекта.

Что решает шаблон проектирования прототипа?

Когда нам нужен объект в любом месте нашего приложения, мы должны использовать оператор «новый». Но когда нам нужно много экземпляров объекта, этот статус может быть дорогостоящим. Например, в играх оружие может раз за разом выбрасывать пулю, и создавать ее снова и снова будет очень затратно. Кажется, имеет смысл использовать этот шаблон для решения этой проблемы.

Структурный код на C#

На приведенной выше диаграмме Prototype может быть абстрактным классом или интерфейсом. Он имеет метод Clone, который выполняет процесс копирования. Классы ConcretePrototype могут быть любыми классами, такими как Student, Product, User. Мы можем определить класс Client как класс операции, который обрабатывает этот процесс.

Я создал класс Bullet, который имеет три свойства и конструкцию.

Я создал Prototype, который возвращает абстрактный метод того же типа, что и класс. И если мы хотим клонировать объект, нам нужно наследование в связанном классе. Когда мы хотим его клонировать, достаточно просто вызвать метод Clone.

Теперь в разделе клиента мы проверяем, работает ли шаблон проектирования или нет. Как видите, я создал первый объект с помощью оператора new. Затем я создал второй объект путем клонирования, чтобы мы уменьшили затраты на память.

И мы успешно клонировали.

Как видите, шаблон проектирования прототипа — довольно простой и полезный шаблон. Когда он используется в нужном месте, производительность приложения значительно повышается.

Удачного кодирования!

Спасибо

Ссылки

https://refactoring.guru/design-patterns/prototype