什么是在外观基类中调用存储的最佳方法,以便有可能封装广泛使用的方法的逻辑来使用存储
假设我们有store(存储库)
export class SomeRepository {
private readonly store;
constructor() {
this.store = createStore()
}
}
我们有从基础立面延伸出来立面
export abstract class BaseFacade {
protected store: ReturnType<typeof createStore>
constructor(protected store: ReturnType<typeof createStore>) {
this.store = store;
}
setEntity(entity: SomeEntity) {
this.store.update(setEntities(entity))
}
}
和具体类的实现
@Injectable({ providedIn: 'root'})
export class SomeFacade extends BaseFacade {
constructor(protected store: Store<SomeRepository>) { <---- here I have issues, do not know how to invoke store
super(store)
}
}
在组件中
export class SomeComponent implements OnInit {
constructor(private readonly facade: SomeFacade) {}
ngOnInit() {
const entity = { name: 'Jon', age: 30 };
this.facade.setEntity(entity); <----- so here I can use method from abstract class (and not implement it each time when defining Facade class
}
}
1条答案
按热度按时间h7appiyu1#
当涉及到设计模式时,真的没有正确或错误的答案。你只需要选择一个适合你的应用程序的模式。
我通常不使用立面模式。
以下是我在Angular Apps中使用的流程:
而且我用NGXS作为我的商店。我从来没有用过elf
Component
-〉从Store
-〉订阅状态,Store
使用services
执行必要的业务逻辑。我个人觉得Facade在你的应用程序中引入了隐藏的流。它会使代码变得不必要的复杂。Angular DI + Provider是你所需要的。