我有一个在实例化上执行登录请求的类,我只希望该登录请求是
由基类执行,并针对所有其他实例确认登录
已执行。任何人都可以建议如何实现这一目标,这是否是一个制作案例
登录功能静态吗?

// 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不会阻止多次调用某项。

10-05 20:42
查看更多