나만의 작은 도서관

[TIL] 240717 캠프 94일차: protoBuf에서의 상속 본문

Today I Learn

[TIL] 240717 캠프 94일차: protoBuf에서의 상속

pledge24 2024. 7. 18. 01:07

오늘 배운 내용                                     

protoBuf에서의 상속

우선 기본적으로 protoBuf에서는 상속을 지원하지 않는다. 하지만 여러가지 방법을 통해 상속처럼 구현되도록 할 수 있다.

 

방법 1

message Animal {
  string name = 1;
}

message Bird {
  Animal animal = 1;
  bool can_fly = 2;
}

message Dog {
  Animal animal = 1;
  string breed = 2;
}

 

Animal 메시지가 공통 필드인 name을 가지는 예제입니다. Bird, Dog 메시지가 Animal 메시지를 포함(Composition)하면서, 두 가지를 합친 새로운 메시지가 됩니다. 그래서 Bird와 Dog메시지도 name이라는 필드를 가지게 됩니다.

 

방법 2

message Animal {
    string name = 1;
    oneof animal_type {
        Bird bird = 2;
        Dog dog = 3;
    }
}
message Bird {
    bool can_fly = 1;
}
message Dog {
    string breed = 1;
}

Protobuf의 oneof 기능을 사용한 예제입니다. oneof를 사용하면, 메세지는 oneof 영역 안에 있는 객체 중 하나를 가져야 합니다. oneof 내의 여러 가지 필드를 setting하게 되면 마지막에 설정한 필드만 남습니다. 여기서는 Animal 메세지가 Bird나 Dog 메세지 중 하나를 갖게 됩니다.

 

참고 링크

https://medium.com/@underwater2/protobuf-%EC%83%81%EC%86%8D-inheritance-%EA%B5%AC%ED%98%84-9ff28b6bbcb8

 

[Protobuf] 상속(inheritance) 구현

3가지 예시 정리

medium.com

 

오늘 한 일                                       

더보기
더보기
  • 팀 프로젝트 도전 요구사항: 채팅 기능(완료), protoBuf로 변경(실패)