728x90
getter/setter/프로퍼티를 쓰지 않는다.
Entity에서 getter/setter 사용을 지양해 상태 노출을 최소화
객체의 상태를 가져오는 접근자를 사용하는 것은 괜찮지만, getter/setter를 사용해 객체 바깥에서 그 결괏값을 사용해 객체에 관한 결정을 내리는 것은 안 된다.
한 객체의 상태에 관한 결정은 어떤 것이든 그 객체 안에서만 이루어져야 한다. 즉, 객체에 메시지를 던져서 작업해야한다.
또한, getter/setter를 사용하게 되면 Open/Closed 원칙을 위반하게 된다.
public class Product {
private final Name name;
private final Count count;
public Jamie(Name name, Count count) {
this.name = name;
this.count = count;
}
public int setCount(int count) {
this.count = count;
}
public int getCount() {
return count;
}
}
// 수량 - 1
product.setCount(product.getCount() - 1);
public class Product {
private final Name name;
private final Count count;
public Jamie(Name name, Count count) {
this.name = name;
this.count = count;
}
public void minusOneProduct() {
return count - 1;
}
}
// 수량 - 1
product.minusOneProduct();
728x90
'OOP' 카테고리의 다른 글
[OOP] 객체 지향 개념 (2) | 2022.12.22 |
---|---|
[객체지향 생활체조 원칙] 규칙 8. 일급 컬렉션을 쓴다. (0) | 2022.11.07 |
[객체지향 생활체조 원칙] 규칙 7. 2개 이상의 인스턴스 변수를 가진 클래스를 쓰지 않는다. (0) | 2022.11.07 |
[객체지향 생활체조 원칙] 규칙 6. 모든 엔티티를 작게 유지한다 (0) | 2022.11.07 |
[객체지향 생활체조 원칙] 규칙 5. 줄여 쓰지 않는다(축약 금지). (0) | 2022.11.07 |
댓글