Шаблон проектирования — это шаблон, который решает часто повторяющуюся проблему при проектировании программного обеспечения.
Паттерн наблюдателя, также известный как паттерн публикации-подписки, представляет собой поведенческий паттерн. Это позволяет вам уведомлять несколько объектов или подписчиков о любом событии, которое публикуется в объекте, за которым они наблюдают.
СДЕЛАТЬ ВИДЕО ДНЯ
Здесь вы узнаете, как реализовать шаблон проектирования наблюдателя в 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Э