불변의 대상은 무엇입니까?
객체 지향 프로그래밍에서 불변의 객체는 생성 된 후에 속성을 변경할 수없는 객체입니다. 대조적으로 대부분의 물체는 변이 가능한 물체로, 창조 후 일부 또는 모든 속성을 자유롭게 변경할 수 있음을 의미합니다. 다양한 컴퓨터 언어는 Java, C ++, Erlang, TCL 및 Scala를 포함하여 불변의 물체를 만들 수 있습니다.
불변의 물체는 두 가지 방법 중 하나로 만들 수 있습니다. 불변의 클래스를 만드는 방법론은 사용되는 컴퓨터 언어에 따라 다릅니다. 언어에 관계없이, 불변의 클래스에는 내부 데이터를 변경할 수있는 방법이 없으며 내부 데이터를 변경하는 방식으로 방법을 변경하거나 과부하시키는 방법이 없어야합니다. 이것은 두 가지 접근법 중 더 복잡합니다. Otherwi에서 불변의 물체를 만들기 위해반면에 SE Mutable Object는 종종 객체를 불변으로 지정하기 위해 키워드를 적용 할 수 있습니다.
예를 들어, Java의 불변의 객체 생성은 "최종"키워드에 크게 의존합니다. Java에서 수업을 불변으로 만드는 빠른 방법은 모든 방법 및 데이터 구성원뿐만 아니라 클래스를 최종적으로 선언하는 것입니다. "const"키워드와 함께 C ++에서도 비슷한 전략을 사용할 수 있습니다. 그러나 클래스 컨텐츠에 따라 이러한 접근법은 최고의 접근법이 아닐 수도 있습니다. 일반적으로 내부 데이터를주의 깊게 유지하여 물체를 불변 할 수 있습니다.위의 예에서와 같이 키워드를 사용하여 불변의 객체를 만드는 것은 전체 클래스를 불변으로 작성하는 것보다 훨씬 쉽습니다. 그러나이 접근법을 사용하면 위험이 있습니다. 이러한 방식으로 불변의 물체를 명시 적으로 지정할 때 프로그래머가 모든 적절한 속성이데이터가 먼저 객체에 통합되었습니다. 불완전한 물체에 의존하는 것은 특히 필수 정보가 없으면 위험 할 수 있습니다.
객체가 변경 가능하지만 불변의 데이터가 제대로 생성되어야하는 경우, 변한 객체를 만들기 전에 불변의 데이터를 초기화해야합니다. 불변의 물체는 데이터 값이든 큰 객체이든 항상 불변의 대상이므로 항상 그렇게 취급해야합니다. 일반적으로, 불변의 물체는 때때로 돌연변이 가능한 물체로 복사 될 수 있지만 불변의 물체를 만들 수 없게 만들 수는 없습니다. 일반적으로 불변의 물체와 사본 중 하나도 불변이되어 데이터 나 메모리 문제를 방지 할 수 있다고 가정 할 수 있습니다.