๐ชจSOLID: 5 Principles of Object Oriented Design
S
- Single-responsiblity PrincipleO
- Open-closed PrincipleL
- Liskov Substitution PrincipleI
- Interface Segregation PrincipleD
- 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