뮤터블(Mutable)과 이뮤터블(Immutable)은 객체의 속성이 변경 가능 여부에 따라 구분됩니다. 뮤터블 객체는 생성된 후에 속성을 변경할 수 있지만, 이뮤터블 객체는 한 번 생성되면 속성을 변경할 수 없습니다. 이러한 차이로 인해 뮤터블과 이뮤터블 객체는 각각의 장단점을 가지고 있으며, 상호작용 패턴 또한 다르게 됩니다.
뮤터블과 이뮤터블의 상호작용 패턴
뮤터블과 이뮤터블 객체는 서로 다른 상호작용 패턴을 가지고 있습니다.
뮤터블 객체의 상호작용 패턴
뮤터블 객체는 속성을 변경할 수 있는 특성을 가지고 있기 때문에 다른 객체와의 상호작용에서 주의가 필요합니다. 다른 객체로부터 뮤터블 객체를 전달받은 경우, 해당 객체의 속성이 변경될 수 있으므로 부작용에 주의해야 합니다. 또한 뮤터블 객체를 복제하여 전달해야 할 경우, 깊은 복사(deep copy)를 수행하여 객체의 불변성을 보장해야 합니다.
List<int> mutableList = new List<int> { 1, 2, 3 };
List<int> copyList = new List<int>(mutableList); // 깊은 복사
이뮤터블 객체의 상호작용 패턴
이뮤터블 객체는 속성을 변경할 수 없기 때문에 다른 객체와의 상호작용에서 안전성을 보장합니다. 다른 객체로부터 이뮤터블 객체를 전달받더라도 속성이 변경되지 않으므로 부작용에 대해 걱정할 필요가 없습니다. 또한 이뮤터블 객체를 복제하여 전달해도 추가적인 조치를 취할 필요가 없습니다.
이러한 상호작용 패턴을 고려하여, 뮤터블과 이뮤터블 객체를 선택하여 사용해야 합니다. 각각의 특성을 이해하고 적절히 활용하여 객체 간의 안전하고 일관된 상호작용을 보장할 수 있습니다.
위의 내용을 종합하면, 뮤터블과 이뮤터블 객체는 객체의 불변성과 상호작용에서 서로 다른 패턴을 가지고 있으므로, 상황에 맞게 적절히 선택하여 사용해야 합니다.