💡 단일 책임 원칙

단일 책임 원칙이란

단일 책임 원칙을 지키지 않은 예시

class Employee() {
	fun calculatePay() // CFO가 필요한 함수 ( 회계팀에서 기능을 정의 ) 
	fun reportHours() // COO가 필요한 함수 ( 인사팀에서 기능을 정의 ) 
	fun save() // CTO가 필요한 함수 ( DBA가 기능을 정의 )
}

해결책

클래스 분리

data class EmployeeData()

class PayCalculator() {
		fun calculatePay()
}
class HourReporter() {
		fun reportHours()
}
class EmployeeSaver() {
		fun saveEmployee()
}

Facade pattern

class EmployeeFacade() {
		val payCalculator: PayCalculator by inject()
		val hourReporter: HourReporter by inject()
		val employeeSaver: EmployeeSaver by inject()
		
		fun calculatePay() {
				payCalculator.calculatePay()
		}
		fun reportHours() {
				hourReporter.reportHours()
		}
		fun saveEmployee() {
				employeeSaver.saveEmployee()
		}
}