* 본 글은 '모던 C++ 디자인 패턴' 책을 읽고 개인적인 정리를 남긴 글입니다.
Q. 프로토타입?
> 이미 존재하는 객체를 이용하거나 복제하여 사용한다.
> 중요 지점은 복제를 구현하는 부분 > 깊은 복제를 수행
Q. 직렬화?
> 객체 데이터를 비트의 나열로 만들어 파일로 저장하거나 네트워크로 전송
Q. 직렬화와 객체 복제는 무슨 상관?
> 객체를 비트열로 나타낼 수 있다면 거꾸로 읽어들여서 역직렬화를 통해 내용을 복구할 수 있다.
> 이 작업은 복제 작업과 동일
note1. C++은 언어적 차원에서 직렬화를 지원하진 않는다.
note2. 다른 언어에선 풍부한 메타 데이터를 정의하여 컴파일된 바이너리에 포함 시킨다.
note3. 리플렉션이라는 기능을 통해 메타 데이터들을 활용하여 직렬화 작업을 쉽게 할 수 있다.
/*
q. Unity에서 파일을 하나 만들고 컴파일 할 때 마다 .meta 파일이 같이 생겼는데 위에서 언급한 메타 데이터?
q. Unreal에서 UProperty, UFunction등 앞의 태그가 붙는데, 이는 가비지 컬랙션을 위해 필요하다고 기억 함. 직렬화도 포함되어 있는가?
!. 직렬화가 객체를 비트열로 전환한 것. 대부분 복구 혹은 카피를 가능하게 함.
!. C#에서는 [Serialization] 같은 걸로 썼던 기억 존재. private 변수로 지정해도 inspector 창에서 표현되는 게 신기해 자주 애용했는 데, Unity에 직렬화한 데이터에 관하여 에디터로 불러오는 별도의 과정이 있는 듯 함.
*/
'개발자로 > 공부' 카테고리의 다른 글
04.17 network 공부 (0) | 2024.04.17 |
---|---|
CMake(1) (0) | 2024.03.30 |
디자인 패턴 #002, Factory (0) | 2024.03.08 |
디자인 패턴 #001, Builder (0) | 2024.03.07 |
알고리즘, 그래프 (0) | 2023.09.25 |