我正在阅读https://books.google.bg/books/about/Agile_Software_Development.html?id=0HYhAQAAIAAJ&hl=en,其中有一章介绍了包,如何将课程分组,如何保持凝聚力,稳定性,责任感,独立性等。
在我的应用程序中,我希望将JSON转换器保留在架构的外围。我想要一个接口类,如下所示:
public interface JsonConverter {
InputStream fromJsonObject(JSONObject jsonObject);
InputStream fromJsonArray(JSONArray jsonArray);
JSONObject toJsonObject(OutputStream outputStream);
JSONArray toJsonArray(OutputStream outputStream);
}
我想要另一个包来包含这个接口的实现 - 我可以轻松换掉一些不同的库。
以下是本书中的一张图片,解释了这一点:
以下是技术解释的图片:
我的问题如下:如何命名包含接口和json转换器库包的包?
首先,我讨厌匈牙利语,所以我不想把它称为以I开头的东西。其次,我想不出一个不包含多个单词的名字,我不知道是否应该使用camelCase或单词之间的点或无。
我可以命名包裹:
my.app.json.interface
my.app.json.converter
编辑:看起来我不能将interface
用作包名的一部分,所以我仍然不知道如何命名我的包
答案 0 :(得分:1)
你在找这样的东西吗?
public interface Converter<X,Y> {
InputStream fromObject(X object);
InputStream fromArray(Y array);
X toObject(OutputStream outputStream);
Y toArray(OutputStream outputStream);
}
public class JsonConverter implements Converter<JSONObject,JSONArray> {
@Override
public InputStream fromObject(JSONObject object) {
return null;
}
@Override
public InputStream fromArray(JSONArray array) {
return null;
}
@Override
public JSONObject toObject(OutputStream outputStream) {
return null;
}
@Override
public JSONArray toArray(OutputStream outputStream) {
return null;
}
}
您抽象出界面的原因是您可以稍后用其他内容替换它。因此,您必须将所有JSON
内容移动到实现中,并将所有可调用内容移动到界面中。泛型是一种简洁的参数化结果,以保持类型安全。