我有一个在实例化上执行登录请求的类,我只希望该登录请求是
由基类执行,并针对所有其他实例确认登录
已执行。任何人都可以建议如何实现这一目标,这是否是一个制作案例
登录功能静态吗?
// Example
class Content {
constructor() {
this.performLogin()
}
performLogin() { // will making this static achieve my request?
// go fetch if 1st time
// else bypass this step
}
performLogout() {
// perform log out once only
}
}
class ContentOne extends Content {
constructor() {
super()
}
doSomethingElse() {
//...
}
}
class ContentTwo extends Content {
constructor() {
super()
}
alertUser() {
//...
}
}
const contentOne = new ContentOne()
const contentTwo = new ContentTwo()
最佳答案
更好的设计是使用LoginService
进行管理。如果已经登录,它将忽略该请求。例如,
class LoginService {
constructor() {
this.isLoggedIn = false;
}
login() {
if (this.isLoggedIn) { return; }
// do work
this.isLoggedIn = true;
}
}
class Content {
constructor(loginService) {
this.loginService = loginService;
this.performLogin()
}
performLogin() {
this.loginService.login();
}
performLogout() {
// perform log out once only
}
}
const loginService = new LoginService();
const contentOne = new ContentOne(loginService);
const contentTwo = new ContentTwo(loginService);
创建函数
static
不会阻止多次调用某项。