3

Android の Parcelable インターフェイスを実装するいくつかのモデル クラスを作成したいと考えていますが、そのクラスを Android の外部で使用できるようにしたいと考えています。これらすべてのモデル クラスのラッパーを実装することを考えました (それらは内部で Google Protocol Buffers を使用して同じ方法でシリアル化されます) が、その方法がわかりません。

インターフェース Model と実装クラス ModelImpl があるとします。現在、Model は Parcelable を拡張していますが、Model と ModelImpl を Parcelable から切り離し、代わりに ParcelWrapper を使用したいと考えています。できれば、これはすべて型安全でナイスであるべきです。この問題にアプローチする方法についての指針はありますか?

もちろん、解決策を見つけたら、ここに投稿します。

ありがとう!:)

4

1 に答える 1

3

最終的にデコレータパターンを使用しました。だから今私は持っている:

  • モデル、必要なパブリック メソッドを定義するインターフェイス。
  • ModelImpl、実際の実装モデル クラス (シリアル化に Google プロトコル バッファを使用)
  • ModelParcelDecorator は、Model および Parcelable を実装し、Model の実装のインスタンスを取得して参照として格納し、Model インターフェイスのすべてのメソッドをこのインスタンスに委譲します。ModelParcelDecorator はプロトコル バッファのシリアル化メカニズムを直接使用するため、手動で Parcel にシリアル化して戻す必要はありません。

Model と ModelImpl を独自のライブラリに配置して、Android の外部で使用できるようになりました。

残念ながら、モデル クラスごとにデコレータを作成する必要がありましたが、これが今まで見つけた最善の解決策です。より良いものを見つけたら、ここに投稿します。

于 2012-11-14T16:11:37.660 に答える