КОНЦЕПЦИИ C #

Шаблон дизайна - Абстрактная фабрика

Согласно Gang of Four, абстрактные фабричные шаблоны можно рассматривать как фабрику для создания фабрик.

Цели обучения

  • Что такое абстрактный шаблон проектирования фабрики?
  • Как написать код, используя шаблон проектирования абстрактной фабрики?
  • Как создать заводского провайдера?
  • Как создать клиентское приложение (из метода Main), использующее поставщик фабрики

Предпосылки

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



  • Базовые знания концепций OOPS.
  • Знание любого языка программирования.

В статье демонстрируется шаблон проектирования абстрактной фабрики с использованием языка программирования C #. Итак, для начала, C #



Начиная

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

Во-первых, реализуйте интерфейсы ISavingAccount и ICurrentAccount следующим образом:

public interface ISavingAccount{  }
public interface ICurrentAccount{  }

Наследуйте интерфейс в классах ниже

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

Теперь давайте создадим реализацию фабрики с именем «Bank1Factory», которая обеспечивает реализацию абстрактных методов.

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

Теперь, когда у нас созданы все абстракции и фабрики. Давайте спроектируем фабричного провайдера. Ниже приведен фрагмент кода для поставщика фабрики, в котором статический метод создаст фабрику на основе имени учетной записи.

Как использовать абстрактного поставщика фабрики?

Давайте рассмотрим пример списка номеров счетов, где, если имя учетной записи состоит из литерала «B1», то он будет использовать экземпляр Bank1Factory, возвращенный поставщиком фабрики.

Если имя учетной записи не содержит литерала «B1», программа выдаст недопустимый {{accountName}}

Выход

Ниже вы найдете вывод из приведенного выше фрагмента кода.

Hello saving B1-456
Hello Current B1-456
Hello saving B1-987
Hello Current B1-987

Github Repo



Спасибо, что прочитали, и я надеюсь, что статья вам понравилась. Пожалуйста, оставьте свой отзыв в разделе комментариев.

Следуйте за мной в C # Publication, LinkedIn, Instagram, Twitter, Dev.to, Pinterest, Substack, Wix.