我的应用程序有几个Fragments
. 每个都Fragment
启动一个Service
对来自服务器的资源的 GET 请求。每个响应都是一个 json 数组,该数组被解析为对象并保存到数据库表中,然后Intent
广播到启动服务的 Fragment 以查询有问题的表并在列表中显示对象。因此,每个 fragment-service-dbtable 处理一个唯一类型的对象,但除此之外,每个 Fragment-Service 对的代码基本相同:
NewsFragment, NewsPostsRequestService (deals with NewsPostObjects)
UserFragment, UserRequestService (deals with UserObjects)
FavoritesFragment, FavoritesRequestServices (deals with FavsObjects)
等等。
如何避免代码重复,让一个片段和一个服务可以用于所有请求?一种选择是将状态作为参数传递:
CustomFragment fragment = CustomFragment.newInstate(NewsState);
然后做(伪代码):
if(mState==NEWS) apiRequest("/news")
else if(mState==USERS) apiRequest("/users")
等等。
但是,我理想中想要的解决方案是片段和服务完全独立于它们请求的资源,数据库表它们的保存和对象类型它们的处理,并且可以轻松添加新请求。如何做到这一点?