如何在 UML 中为具有多个 Observable 属性的 angular 服务建模
How to model in UML an angular service with serveral Observable attribute
我尝试记录我的 angular 代码。
在我编码的服务中,我有几个像这样的 BehaviorSubject :
@Injectable
export class ExampleService {
private sourceInfoA = new BehaviorSubject<String>(null);
private sourceInfoB = new BehaviorSubject<String>(null);
currentInfoA = this.sourceInfoA.asObservable();
currentInfoB = this.sourceInfob.asObservable();
constructor() { }
changeInfoA(info: String){
this.sourceInfoA.next(info);
}
changeInfoB(info: String){
this.sourceInfoB.next(info);
}
}
(例如在 ExampleComponent 的构造函数上调用此服务)。
我尝试阅读一些关于 Observer 设计模式的文档(例如 https://en.wikipedia.org/wiki/Observer_pattern),但我没有设法查看此模式是否适用于我的服务,以及总体上如何使用此模式进行建模模式我的服务。
当我们使用像我这样的一些 rxjs 工具时,有人可以帮助我或给我一些关于如何建模观察者模式的指示吗?
(对不起我的英语,这不是我的母语)。
编辑:
我尝试做的 UML class 图...不知道它是否符合观察者模式:
您的 class 图大致正确。如果您还想记录动态行为,则可以添加序列图。
我将 class 图表更改如下:
(1) 将重数添加到每个关联的两侧。如果 ExampleService 和 ExampleComponent 都是单例:
- Association BehaviorService -- ExampleService:左重数为
2
,右重数为 0..1
。
- Association ExampleService -- ExampleComponent: 两个重数都是
1
.
(2) 将类型Observable
添加到属性currentInfoA
和currentInfoB
.
类 SourceInfoA
和 SourceInfoB
只有在代码中确实存在 class 时才应该建模。
我尝试记录我的 angular 代码。 在我编码的服务中,我有几个像这样的 BehaviorSubject :
@Injectable
export class ExampleService {
private sourceInfoA = new BehaviorSubject<String>(null);
private sourceInfoB = new BehaviorSubject<String>(null);
currentInfoA = this.sourceInfoA.asObservable();
currentInfoB = this.sourceInfob.asObservable();
constructor() { }
changeInfoA(info: String){
this.sourceInfoA.next(info);
}
changeInfoB(info: String){
this.sourceInfoB.next(info);
}
}
(例如在 ExampleComponent 的构造函数上调用此服务)。
我尝试阅读一些关于 Observer 设计模式的文档(例如 https://en.wikipedia.org/wiki/Observer_pattern),但我没有设法查看此模式是否适用于我的服务,以及总体上如何使用此模式进行建模模式我的服务。
当我们使用像我这样的一些 rxjs 工具时,有人可以帮助我或给我一些关于如何建模观察者模式的指示吗?
(对不起我的英语,这不是我的母语)。
编辑:
我尝试做的 UML class 图...不知道它是否符合观察者模式:
您的 class 图大致正确。如果您还想记录动态行为,则可以添加序列图。
我将 class 图表更改如下:
(1) 将重数添加到每个关联的两侧。如果 ExampleService 和 ExampleComponent 都是单例:
- Association BehaviorService -- ExampleService:左重数为
2
,右重数为0..1
。 - Association ExampleService -- ExampleComponent: 两个重数都是
1
.
(2) 将类型Observable
添加到属性currentInfoA
和currentInfoB
.
类 SourceInfoA
和 SourceInfoB
只有在代码中确实存在 class 时才应该建模。