JavaScript 编程中的设计模式与领域驱动设计应用
1. JavaScript 中继承的替代方案
在 JavaScript 这样的动态语言中,经典继承很少被使用。因为可以采用其他模式来满足需求,比如对象组合。当我们不想通过继承来共享功能时,可以直接传递已经实现所需功能的对象并使用它。
例如,下面是一个 Notifications
对象的示例:
function Notifications(store) {
if (typeof(store) === 'undefined') {
this.store = []
} else {
this.store = store
}
}
Notifications.prototype.add = function (notification) {
store.push(notification)
}
这个 Notifications
对象管理系统某部分的通知,它将通知的保存操作委托给 store
对象,默认情况下 store
是一个数组。这种组合方式的优点是便于测试,在测试时可以轻松替换 store
对象。
2. 无继承的多态
在 Java 等语言中,继承的一个原因是实现多态,即一个方法在不同对象中有不同的实现。在经典继承结合类型检查的情况下,调用方法的对象需要有共同的祖先或接口。
例如: