getter / setter가 정당화되는 시점에 대해이 페이지를 읽고 OP는 다음 코드 샘플을 제공했습니다.
class Fridge
{
int cheese;
void set_cheese(int _cheese) { cheese = _cheese; }
int get_cheese() { return cheese; }
}
void go_shopping(Fridge fridge)
{
fridge.set_cheese(fridge.get_cheese() + 5);
}
허용 응답 상태 :
그런데, 귀하의 예제에서, 나는 클래스 줄 것 과 대신의 방법을, 하고 . 그러면 여전히 캡슐화가 발생합니다.
Fridge
putCheese()
takeCheese()
get_cheese()
set_cheese()
값을 get / set에서 putCheese()
/ 로 바꾸면 캡슐화가 어떻게 보존 takeCheese()
됩니까? 분명히 값을 얻거나 설정하는 것이므로 get / set으로 그대로 두지 않겠습니까?
같은 대답에서 다음과 같이 말합니다.
게터와 세터가 있다고해서 캡슐화가 깨지는 것은 아닙니다. 캡슐화를 깨뜨리는 것은 모든 데이터 멤버 (Java lingo의 모든 필드)에 대해 아무런 생각없이 자동으로 getter 및 setter를 추가하는 것입니다.
이 경우에는 하나의 변수 만 있으며 cheese
치즈를 냉장고로 가져 와서 반환 할 수 있으므로이 경우 get / set 쌍이 정당화됩니다.
putCheese
냉장고에 치즈를 추가하고takeCheese
제거 할 것입니다. 객체 필드 게터 및 세터 ((저수준) 컴퓨터 프로그래밍 추상화)가 아니라 (상위 레벨) 도메인 지향 추상화입니다.