Давайте разберемся в теории, лежащей в основе шаблона модуля, и цели, которой он служит для реализации этого шаблона.

Шаблон Module изначально был определен как способ обеспечить как частную, так и публичную инкапсуляцию для классов.

Кроме того, он используется, чтобы превзойти концепцию классов, включая частные и общедоступные свойства / методы и переменные внутри одного объекта, тем самым инкапсулируя базовые детали (детали реализации, свойства, переменные и т. Д.) Из глобальной области видимости. .

Если мы попытаемся обобщить суть паттерна Module, он служит следующим целям:

  1. Инкапсуляция кода
  2. Конфиденциальность данных

Давайте перейдем к пониманию паттерна с помощью кода.

Первый шаг - создать модуль.

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

Если мы попытаемся выполнить вышеупомянутый метод, мы увидим, что получаем вывод из общедоступного метода, доступного для нашего calcOrderModule. В противном случае, если мы попытаемся выполнить частное свойство или методы из функции модуля, мы получим undefined. Чтобы внести небольшое изменение в идентификацию, частное свойство или метод начинается со знака подчеркивания (_).

Резюмируя, мы выполнили 3 шага:

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

Итак, до сих пор мы рассмотрели основы паттерна Module. Перейдем к паттерну модуля «Раскрытие».

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

Замечание: шаблон модуля аналогичен заводским функциям, поскольку мы создаем объект без нюансов использования ключевого слова «новое».

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

Давайте попробуем добавить еще несколько частных свойств и частных методов в наш существующий модуль.

Итак, мы объявили несколько частных свойств и 2 частных метода для расчета скидки в списке товаров корзины покупок.

Этот метод даст нам количество товаров и цену, если к каким-либо товарам из списка применена скидка.

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

Наконец, общедоступный метод, который мы возвращаем из нашего модуля, вызовет указанный выше метод.

Приведенные выше фрагменты кода фрагментами выше демонстрируют реализацию шаблона раскрывающего модуля.

Теперь давайте попробуем выполнить код, предоставив ввод и проверив его вывод.

Если вы попытаетесь выполнить приведенный выше код, мы увидим, что при получении частной собственности мы получим undefined. Большая часть реализации кода не требует пояснений.

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

Надеюсь, у вас есть некоторые идеи о модуле и раскрытии паттерна модуля.

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

Удачного кодирования. Продолжай учиться. Продолжайте исследовать.