首页 > 解决方案 > 使用原型继承与委托模式

问题描述

我有两个做同样事情的代码示例。但这让我很感兴趣,这在这个用例中是最好的。我知道原型继承实际上是行为委托模式。但是您可以在我的第一个示例中看到,当我需要帮助器时,我使用第二个示例来存储帮助器方法的原型,我创建了新的实例帮助器类并使用此实例。使用此实例后,垃圾收集。
这对我来说很有趣,哪个最好?
当我创建新的实例函数调用时间是这个明显的性能问题吗?

class UserHelper {
    checkFileSize() {

    }

    fileUpload() {

    }

}

class User extends UserHelper {
    constructor(firstName, lastName) {
        super()
        this.firstName = firstName;
        this.lastName = lastName;
    }

    changeUserAvatar() {
        this.checkFileSize();
        this.fileUpload();
    }
}

const murad = new User();

VS

class UserHelper {

    checkFileSize() {

    }

    fileUpload() {

    }

}

class User {
    constructor(firstName, lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }

    changeUserAvatar() {
        const helper = new UserHelper();
        helper.checkFileSize();
        helper.fileUpload();
    }
}

const murad = new User();

标签: javascript

解决方案


使用助手的明显优势是您可以在多个类和方法中多次重用它,而不受继承问题的限制。出于同样的原因,这将有助于使您的代码库保持在DRY原则上。


推荐阅读