๐ชจ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