在Android之外使用Parcelable模型类,使用Parcelable包装器

时间:2012-11-06 16:34:42

标签: java android parcelable

我想创建一些实现Android的Parcelable接口的模型类,但我希望这些类可以在Android之外使用。我想过为所有这些模型类实现一个包装器(它们以相同的方式序列化,内部有Google Protocol Buffers),但我不知道该怎么做。

假设我有一个接口Model和一个实现类ModelImpl。目前,Model扩展了Parcelable,但是我想将Model和ModelImpl与Parcelable分离,而是使用ParcelWrapper。优选地,这应该都是类型安全且好的。有关如何解决这个问题的任何指示?

如果我遇到一个解决方案,我当然会在这里发布。

谢谢! :)

1 个答案:

答案 0 :(得分:3)

我最终使用了装饰模式。所以现在我有了:

  • Model,定义我需要的公共方法的接口。
  • ModelImpl,实际的实现模型类(使用Google Protocol Buffers进行序列化)
  • ModelParcelDecorator,它实现Model和Parcelable,并获取Model的实现实例并将其存储为引用,将所有方法从Model接口委托给此实例。 ModelParcelDecorator直接使用协议缓冲区序列化机制,因此我不需要序列化到包中并手动返回。

Model和ModelImpl现在可以驻留在自己的库中,并可以在Android之外使用。

不幸的是,我需要为每个模型类编写一个装饰器,但这是我迄今为止找到的最佳解决方案。如果我找到更好的东西,我会在这里发布。