【发布时间】:2018-04-27 11:48:29
【问题描述】:
在这篇文章中,我想向您展示一个包含几个 JS 类的小代码示例,并询问您,这段代码是因为LSP 还是可以的,还是它违反了封装原则。
此示例中的_framesMonitor 变量是我们在Job 类中使用的某个3-d 派对库vqt 的一个实例。 _framesMonitor.stopListen() 可以抛出异常,尤其是vqt.Errors.ProcessExitError。
在下面的这个例子中,是否可以将 vqt.Errors.ProcessExitError 类型暴露给 JobManager 类(因为 LSP 没关系)或者它违反
封装揭示内部实现细节。
// Job.js
class Job {
constructor() {
this._framesMonitor = new FramesMonitor();
}
async stop() {
await this._framesMonitor.stopListen();
}
}
// JobsManager.js
class JobsManager {
async deleteJob() {
try {
await job.stop();
} catch(err) {
// vqt.Errors.ProcessExitError here
}
}
}
【问题讨论】:
标签: oop encapsulation solid-principles liskov-substitution-principle