工厂函数和模块模式

在JavaScript中,工厂函数和模块模式是两种常用的编程模式,它们各自解决了不同场景下的问题,提高了代码的组织性和可复用性。

工厂函数(Factory Function)

工厂函数是一种设计模式,它提供了一个创建对象的函数,这个函数可以基于输入参数返回不同配置的对象。工厂函数的好处在于它可以避免使用构造函数和new操作符,同时允许你根据需要灵活地生成对象。基本示例如下:

function createPerson(name, age) {
    return {
        name: name,
        age: age,
        introduce: function() {
            console.log("Hi, I'm " + this.name + " and I'm " + this.age + " years old.");
        }
    };
}

var person1 = createPerson("Alice", 30);
person1.introduce();

模块模式(Module Pattern)

模块模式是一种将相关功能封装在一起的模式,它通过闭包提供私有变量和方法,同时暴露一个公共接口来与外部世界交互。这种模式非常适合封装具有特定功能的代码块,避免全局命名空间污染。模块模式通常通过立即执行函数表达式(IIFE, Immediately Invoked Function Expression)实现,示例如下:

var module = (function() {
    var privateVar = "I am private";

    function privateMethod() {
        console.log(privateVar);
    }

    return {
        publicMethod: function() {
            privateMethod();
        }
    };
})();

module.publicMethod(); // 输出 "I am private"

区别总结

这两种模式在实际开发中经常结合使用,以达到更好的代码组织和复用效果。