js 디자인 모드: 관찰자 및 게시 구독 모드
관찰자 모드
관찰자 가 목 표를 직접 구독 하고 목표 가 사건 을 촉발 할 때 관찰자 에 게 업 데 이 트 를 통지 합 니 다.
단순 실현
class Observer {
constructor(name) {
this.name = name;
}
update() {
console.log(`${this.name} update`)
}
}
class subject {
constructor() {
this.subs = [];
}
add(observer) {
this.subs.push(observer);
}
notify() {
this.subs.forEach(item => {
item.update();
});
}
}
const sub = new subject();
const ob1 = new Observer('ob1');
const ob2 = new Observer('ob2');
//
sub.add(ob1);
sub.add(ob2);
//
sub.notify();
게시 구독 모드
게시 구독 모드 는 예약 센터 를 통 해 처리 되 어 구독 자 와 게시 자 를 분리 시 키 고 서로 간섭 하지 않 습 니 다.
단순 실현
class Event {
constructor() {
this.lists = new Map();
}
on(type, fn) {
if (!this.lists.get(type)) {
this.lists.set(type, []);
}
this.lists.get(type).push(fn);
}
emit(type, ...args) {
const arr = this.lists.get(type);
arr && arr.forEach(fn => {
fn.apply(null, args);
});
}
}
const ev = new Event();
//
ev.on('msg', (msg) => console.log(msg));
//
ev.emit('msg', ' ');
차이 점
사실 이 두 모델 은 같은 디자인 모델 의 서로 다른 실현 이 라 고 할 수 있다.
관찰자 모드 는 관찰자 와 목표 가 직접 상호작용 을 하고 결합 성 이 있 으 며 게시 구독 모드 는 하나의 예약 센터 를 통 해 처리 되 고 구독 자 와 게시 자 는 서로 간섭 하지 않 으 며 디 결합 을 했다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.