You can select any programming language.
Implement a basic Pub/Sub following the given interface.
// Interface
interface Subscription {unsubscribe(): void
}
interface Subject<T> {publish(value: T): void
subscribe(cb: (value: T) => void): Subscription
}
// Usage
const subject = new Subject()
const subscription1 = subject.subscribe(x => console.log(x))
const subscription2 = subject.subscribe(x => console.log(x + 10))
subject.publish(1) // prints 1 and 11 in any order
subscription1.unsubscribe()
这道题要求你实现一个基础的 Pub/Sub 订阅发布系统,核心是维护订阅者列表,并支持发布消息和取消订阅两个操作。每次调用 subscribe 时,需要返回一个 Subscription 对象,之后可以通过 unsubscribe() 将对应回调从列表中移除;调用 publish(value) 时,则要把当前消息广播给所有仍然有效的订阅者。题目强调同一条消息会被所有订阅者收到,且输出顺序可以任意,因此实现时重点在于数据结构设计、订阅管理和取消订阅的正确性,通常可以用数组、哈希表或集合来保存回调。
正文完