Module Design Patterns
Common module patterns include singleton modules (one shared instance), factory modules (return new instances), and service modules (stateless utility functions).
Common module patterns include singleton modules (one shared instance), factory modules (return new instances), and service modules (stateless utility functions).
// Singleton: module state is shared
let instance = null;
export function getInstance() {
if (!instance) instance = new Store();
return instance;
}
// Factory: creates new instances
export function createLogger(prefix) {
return { log: (msg) => console.log(`[${prefix}] ${msg}`) };
}
// Service: pure functions, no state
export const mathService = {
add: (a, b) => a + b,
multiply: (a, b) => a * b,
};
Module singletons are natural in ES modules — the module is only evaluated once, so module-level variables persist.
More in JavaScript