JS Built-ins
DesignPatternsintermediate

Factory β€” Hiding constructor complexity

πŸ“– Usage Example
function createConnection(url) {
  const parsed = new URL(url);
  return { host: parsed.hostname, port: parsed.port };
}
const conn = createConnection('http://localhost:3000');

Use a factory to hide constructor complexity like parsing or validation.

Factory Pattern β€” Hiding Complexity

The factory can hide complex initialization logic from the caller.

Challenge: Implement a createConnection(host, port) factory that returns a connection object with:

  • host and port properties
  • isConnected property (initially false)
  • connect() method that sets isConnected to true
  • disconnect() method that sets isConnected to false

Example:

const conn = createConnection('localhost', 5432)
conn.isConnected // false
conn.connect()
conn.isConnected // true
πŸ’‘ Hints (3)
  • β€’ Initialize isConnected to false
  • β€’ Methods modify the isConnected property
  • β€’ Store host and port parameters