我拥有一个抽象的DataService
,它可能会有几种实现。我想要一个使用LocalStorage
作为后端(主要用于测试)的实现,可能还需要一个Google和Facebook后端来存储我的应用数据:
@Injectable({
providedIn: 'root'
})
abstract class DataService {
abstract get(token: string): Observable<any>
abstract set(token:string, data: any): void
}
@Injectable({
providedIn: 'root'
})
export class LocalDataService implements DataService {
constructor() {}
get(token: string): Observable<string> {
return of(localStorage.getItem(token));
}
set(token: string, data: string): void {
localStorage.setItem(token, data);
}
}
@Injectable({
providedIn: 'root'
})
export class GDriveDataService implements DataService {...}
@Injectable({
providedIn: 'root'
})
export class FacebookDataService implements DataService {...}
我的问题是,只有在用户使用Google或Facebook帐户登录后,我才能知道要使用哪种实现。
启动应用程序后,是否可以切换服务的提供的实施方式?我需要采取其他方法吗?