3

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

假设我有一个接口模型和一个实现类 ModelImpl。目前,Model 扩展了 Parcelable,但我想将 Model 和 ModelImpl 从 Parcelable 中解耦,并使用 ParcelWrapper。最好,这都应该是类型安全且美观的。关于如何解决这个问题的任何指示?

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

谢谢!:)

4

1 回答 1

3

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

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

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

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

于 2012-11-14T16:11:37.660 回答