【发布时间】:2012-10-31 01:57:11
【问题描述】:
我正在尝试设计“网络连接”,以便轻松用于从服务器检索数据。但是,我面临一个设计问题。
我要使用的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。
【问题讨论】:
标签: java oop design-patterns conceptual