我写了一个interface
用于存储数据为List
/Map
并且有能力找回它。事情是这样的:这种接口设计会被认为是不好的?
public interface Repository {
<K, V> void register(String typeTag, Key<K> key, V value);
void unregister(String typeTag);
void unregister(String... typeTags);
void unregister(Collection<String> typeTags);
<T> void add(String typeTag, T object);
<T> void add(String typeTag, Collection<T> object);
<T, K> T get(String typeTag, Key<K> key);
<T, U, K> Map<T, U> getAsMap(String typeTag, Collection<Key<K>> keys);
<T, U> Map<T, U> getAsMap(String typeTag);
<T, K> List<T> getAsList(String typeTag, Collection<Key<K>> keys);
<T> List<T> getAsList(String typeTag);
<T, K> Map<String, T> get(Collection<String> typeTags, Collection<Key<K>> keys);
<T> T remove(String typeTag, T object);
void clear(String typeTag);
void clear();
<U, V> Map<U, V> map(String typeTag1, String typeTag2) throws IllegalMappingException;
<U, V, K> Map<U, V> map(String typeTag1, String typeTag2, Collection<Key<K>> keys) throws IllegalMappingException;
<U, V> Map<U, V> map(String typeTag1, Criteria<U> type1Criteria, String typeTag2, Criteria<V> type2Criteria) throws IllegalMappingException;
}
现在,我已经深思熟虑了这个接口的目的,可以通过基本上下面的方法来定义:
register()
,unregister()
,add()
,get()
,remove()
,clear()
和map()
但是,正如您所看到的,这些方法的重载版本支持在Collection
中获取和返回数据。这些可以归类为“便利”方法(就我看来)。但是,这让我怀疑实现者将不得不将这些方法实施为强制措施,并且实施这些方法的人太多了。我个人有这样的感觉,即设计对界面的影响过大,应该减少“负担”。
首先,
这是设计很糟糕?
我应该考虑哪些事项/策略/应用并在继续扩展层次结构之前记住要改变此设计。
编辑:
我只在Java 7和更少寻求解决方案。
对于工作代码,codereview.stackexchange.com将是一个更好的地方问。在一定程度上:-) – GhostCat
downvoter照顾解释? –