OOP로 개발을 하다보면 캡슐화가 매우 중요하다.
특히 게임개발을 하다보면 데이터 하나하나가 매우 중요한데
이런 데이터를 캡슐화하지 않게 되면 치명적인 오류를 발생시킬 수도 있다.
(게임의 의도대로 진행이 안된다던지 등의 이슈)
그래서 한 클래스 내부에서 데이터를 Private 으로 설정하여 제한된 접근을 생성하며 캡슐화를 한다.
하지만 게임 로직 상 값이 수정돼야할 상황이 종종 발생하는데
이 때, Getter/Setter를 이용하여 좀 더 안전하게 값을 수정한다.
protected static _language = Application.systemLanguage;
// getter setter
public static get Language() {
if (this._language === 23) {
return 'Korean';
} else if (this._language === 6) {
return 'Chinese';
} else if (this._language === 22) {
return 'Japanese';
} else {
return 'English';
}
return 'English';
}
위 코드에서 게임 언어를 Application.systemLanguage에서 받고 protected로 보호했지만,
다른 클래스에서 사용할 때 데이터를 가공해야 했다.
_language는 return 값이 number고 어떤 number가 어떤 언어를 의미하는지 매번 확인하는 게 아닌,
string으로 변환하여 사용하는게 훨씬 편리하기 때문이다.
위와 같이 하면 캡슐화를 하면서 동시에 외부에서는 원하는 타입의 데이터,
혹은 위 코드에서 사용은 안했지만 set으로 변경하여 사용할 수 있게 된다.
물론 Setter는 내부에 조건을 사용하여 원치 않는 에러나 결과가 나오지 않도록 하기 위해 종종 사용된다.
'게임 개발 학습 > CS' 카테고리의 다른 글
[CS] Pure Function (0) | 2023.09.25 |
---|---|
[CS] 객체 지향 설계 5원칙 (SOILD 원칙) (0) | 2023.09.25 |
[CS] OOP 스터디 (설계 5원칙과 Layer) (0) | 2023.09.25 |
[CS] 핵심 디자인 패턴 6가지 (0) | 2023.09.25 |