Реализация шаблона проектирования Observer в TypeScript

Реализация шаблона проектирования Observer в TypeScript

Шаблон проектирования — это шаблон, который решает часто повторяющуюся проблему при проектировании программного обеспечения.





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





СДЕЛАТЬ ВИДЕО ДНЯ

Здесь вы узнаете, как реализовать шаблон проектирования наблюдателя в TypeScript.





Шаблон наблюдателя

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

как узнать, что ваша учетная запись facebook была взломана

Для контекста предположим, что вы создаете средство отслеживания запасов, которое отслеживает количество товаров в вашем магазине. В этом случае ваш магазин является субъектом/издателем, а ваш инвентарь – наблюдателем/подписчиком. Использование шаблона проектирования наблюдателя было бы оптимальным в этой ситуации.



как подключить bluetooth-наушники к xbox one без переходника

В шаблоне проектирования наблюдателя ваш подчиненный класс должен реализовать три метода:

  • Ан прикреплять метод. Этот метод добавляет к субъекту наблюдателя.
  • А отделить метод. Этот метод удаляет наблюдателя от субъекта.
  • А уведомить/обновить метод. Этот метод уведомляет наблюдателей субъекта об изменении состояния субъекта.

Ваш класс наблюдателя должен реализовать один метод, Обновить метод. Этот метод реагирует на изменение состояния субъекта.





Реализация классов Subject и Observer

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

// Subject/Publisher Interface 
interface Subject {
attachObserver(observer: Observer): void;
detachObserver(observer: Observer): void;
notifyObserver(): void;
}

// Observer/Subscriber Interface
interface Observer {
update(subject: Subject): void;
}

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





как сделать оригинальный звук в тикток

Конкретный предметный класс

Следующим шагом является реализация конкретного предметного класса, реализующего Предмет интерфейс:

// Subject 
class Store implements Subject {}

Далее инициализируйте Предмет состояние в Хранить учебный класс. Наблюдатели субъекта будут реагировать на изменения этого состояния.

В этом случае состояние — это число, и наблюдатели будут реагировать на увеличение числа:

// Subject state 
private numberOfProducts: number;

Затем инициализируйте массив наблюдателей. В этом массиве вы будете отслеживать наблюдателей:

Ф2134К1Ф751087БФ22Д373К98ФЭ81ФБК9А20637Э