我正在尝试设计“网络连接”以便于从服务器检索数据。但是,我面临一个设计问题。
我NetworkUtil
将要使用的班级被设计为
class NetworkUtil
public NetworkUtil(URL, resultType); // resultType might be XML or RAW
public setListener(listener); // listener will notice when result has arrive
public addPostData(key, value);
public connect(); // connect start new thread, so result will shown in listener
interface NetworkUtilListener1
public onNetworkFail();
public onNetworkSuccess(URL, resultType, xml, raw);
interface NetworkUtilListener2
public onNetworkFail();
public onNetworkSuccessRAW(URL, resultType, raw);
public onNetworkSuccessXML(URL, resultType, xml);
一旦结果到达,我将检查 resultType 并使用该参数的结果。但是,在上面显示的 2 个示例(NetworkUtilListener1
和NetworkUtilListener2
)中,我考虑了将来使用更多resultType
诸如 JSON、图像甚至我的自定义类型时的问题,因此我的团队可以轻松使用它。
NetworkUtilListener1
将有长时间未使用的参数,例如
onNetworkSuccess(URL, resultType, raw, xml, json, image);
这不是我认为的好设计。
NetworkUtilListener2
将迫使使用它的具体类有很多空方法,因为大多数时候我们在每个项目上只喜欢 1 或 2 种类型的结果。
onNetworkSuccessRAW(URL, resultType, raw);
onNetworkSuccessXML(URL, resultType, xml);
onNetworkSuccessJSON(URL, resultType, json);
onNetworkSuccessImage(URL, resultType, image);
任何人都可以在重新设计这个类结构时给我一些帮助,或者向我推荐我需要关注的设计模式。所以我可以有更好NetworkListener
的。