2012-06-28 44 views
4

協議緩衝文件警告......從生成的協議緩衝區類繼承

你不應該通過繼承從他們 添加行爲生成的類。這將打破內部機制,並不好 無論如何,面向對象的做法。

來源:Protocol Buffer Basics

我的兩個部分的問題是:

  1. 什麼樣的內部機制,這可能打破?
  2. 無論如何,這是不是一個好的OO練習?

回答

3
  1. 「錯在何處」將是非常具體的實施。如果您引用了特定實現,它可能會回答,但從更一般的意義上說:這不是一個受支持的方案,並且實現不需要正常工作,或者根本不需要如果子類化。這是一個未定義的行爲,具有這一切意味着。此外,協議緩衝區不支持繼承,因爲不是所有的目標平臺都可以支持它。主要思想:

    • 有可能是代碼檢查傳入對象與預期類型的​​列表 - 如果您的機器是不存在,它可能會失敗
    • 您添加
    • 它不會處理任何領域等
    • 串行器的整個想法是強有力地回饋你序列化的東西;如果你序列化了一個SomeDerivedClass,那麼序列化程序就不可能給你這樣的結果
    • 像這樣的庫的整個點都是爲了隱藏血腥的實現細節;你不希望與任何實現搞亂(多態性必須專爲
  2. 作爲一個面向對象的關注;這不是你的類型;它是一個旨在滿足特定目的的DTO。 DTO的常用用法可能是地圖從DTO到/來自您的域模型(可能更復雜),或者可能是封裝了DTO(如果這很有用)(可能作爲façade)。