【发布时间】:2017-03-29 23:07:11
【问题描述】:
我想封装文档是如何被激活的逻辑(布尔值)。当一个文档被激活时,它应该被添加到一个 activeDocuments 列表中,并且该标志应该设置为 true。我想禁止直接访问 isActive 属性。
class DocumentService {
private activeDocuments : Map<DocumentModel> = new Map<DocumentModel>();
// Activates the document and adds it to the list
activateDocument(document: DocumentModel) {
document.setActive();
activeDocuments.set(document.id, document);
}
}
class DocumentModel {
private isActive: boolean;
setActive() {
this.isActive = true;
}
}
class DocumentComponent {
documentSelected() {
// this.document.setActive() - SHOULD BE FORBIDDEN because the document is not added to the activedocument list !
this.documentService.activateDocument(this.document);
}
}
我为这个问题想出的唯一解决方案是创建两个接口 DocumentServiceInterface 有一个 setActive() 方法和 DocumentInterface 没有它所以它阻止 |DocumentComponent 激活文档但服务仍然可以激活文件。
有没有设计模式/配方可以解决这个问题?
遍历文档列表以检查它是否处于活动状态不是一个选项,因为应用程序中的结构要复杂得多,并且文档的数量应该可以扩展(例如可能有数千个文档)
【问题讨论】:
标签: angularjs angular typescript design-patterns architecture