๐ŸชจSOLID: 5 Principles of Object Oriented Design

S - Single-responsiblity Principle O - Open-closed Principle L - Liskov Substitution Principle I - Interface Segregation Principle D - Dependency Inversion Principle

1. Single Responsibility Principle(SRP, ๋‹จ์ผ ์ฑ…์ž„ ์›์น™)

โœ… ๋ชจ๋“  class(function,module)์€ ํ•œ ๊ฐ€์ง€ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ ์˜ค์ง ํ•œ ๊ฐ€์ง€ ์ด์œ ๋กœ๋งŒ ๋ณ€ํ™”ํ•ด์•ผ ํ•œ๋‹ค. a

  • ๐Ÿšซ SRP ์œ„๋ฐ˜ - ๋ณ€ํ™” ๊ฐ€๋Šฅํ•œ ์ด์œ ๊ฐ€ ํ•˜๋‚˜ ์ด์ƒ!

class CalorieTracker {
  constructor(maxCalories) {
    this.maxCalories = maxCalories
    this.currentCalories = 0
  }
  // ๐Ÿšซ track calorie
  trackCalories(calorieCount) {
    this.currentCalories += calorieCount
    if (this.currentCalories > this.maxCalories) {
      this.logCalorieSurplus()
    }
  }
  // ๐Ÿšซ log calorie
  logCalorieSurplus() {
    console.log("Max calories exceeded")
  }
} 

const calorieTracker = new CalorieTracker(2000)
calorieTracker.trackCalories(500)
calorieTracker.trackCalories(1000)
calorieTracker.trackCalories(700)   // Max calories exceeded
  • ๐Ÿ”‘ ์ฝ”๋“œ๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ ๋ชจ๋“ˆํ™” - ๋ณ€ํ™” ๊ฐ€๋Šฅํ•œ ์ด์œ ๊ฐ€ ํ•˜๋‚˜์”ฉ

// calorie.js
import logMessage from "./log.js"

class CalorieTracker {
  constructor(maxCalories) {
    this.maxCalories = maxCalories
    this.currentCalories = 0
  }

  trackCalories(calorieCount) {
    this.currentCalories += calorieCount
    if (this.currentCalories > this.maxCalories) {
      logMessage("Max calories exceeded")
    }
  }
} 

const calorieTracker = new CalorieTracker(2000)
calorieTracker.trackCalories(500)
calorieTracker.trackCalories(1000)
calorieTracker.trackCalories(700)   // Max calories exceeded

// log.js
export default function logMessage(message) {
  console.log(message)
}

โš™๏ธReference

Single Responsibility Principle Explained - SOLID Design Principles

The SOLID Principles of Object-Oriented Programming Explained in Plain English

Last updated