// as-is
class Store { // Store 클래스가 많은 역할을 혼자 수행한다.
func cummunicateUser() { }
func manageProducts() { }
func manageMoney() { }
}
// to-be
class CounterManager {
func communicateUser() { }
}
class ProductManager {
func manageProducts() { }
}
class Owner {
func manageMoney() { }
}
class Store {
let counterManager: CounterManager
let productManager: ProductManater
let owner: Owner
func sellProduct() {
counterManager.communicateUser()
// code
}
// code...
}
응집도를 높이자.
응집도는 클래스의 변수와 메서드가 얼마나 유기적으로 엮여있는지를 나타내는 지표이다.
응집도가 높을수록 클래스의 메서드는 인스턴스 변수를 많이 사용한다.
응집도가 낮을수록 클래스의 메서드는 인ㅅ턴스 변수를 적게 사용하거나 사용하지 않는다.
// as-is
class LowCohension {
var a: Int
var b: Int
var c: Int
func processA() {
print(self.a)
}
func processB() {
print(self.b)
}
func processC() {
print(self.c)
}
}