Здравствуйте!
Имеется 2 проекта: core-api, core-impl. В API у меня лежат наборы интерфейсов, а в impl реализация этих интерфейсов. Пакет у них общий - test.core.
В связи с этим вопрос-правильно ли это?
Возьмем на примере класса-конфигурации...
Интерфейс в пакете test.core проект core-API:
public interface ICfg {
public static final class AttrKey<V> {
private final String name;
private final Class<V> dataType;
private AttrKey(String name, Class<V> dataType) {
super();
this.name = name;
this.dataType = dataType;
}
public String getName() {
return name;
}
public Class<V> getDataType() {
return dataType;
}
public static <V> AttrKey<V> newKey(String name, Class<V> dataType) {
return new AttrKey<V>(name, dataType);
}
}
public interface Attribute<V> {
public Optional<V> getValue();
public void setValue(V value);
}
public <V> Attribute<V> attr(AttrKey<V> key);
}
Имеет сам интерфейс, а также сразу класс AttrKey...
А также ConfigImpl в пакете test.core проекта core-impl:
public final class Config implements ICfg {
private final Map<String, Object> values = new HashMap<>();
private Config() {
}
public static ICfg newInstance() {
return new Config();
}
@Override
public <V> Attribute<V> attr(AttrKey<V> key) {
return new Attribute<V>() {
@Override
public Optional<V> getValue() {
final V value;
value = key.getDataType().cast(values.get(key.getName()));
return Optional.of(value);
}
@Override
public void setValue(V value) {
values.put(key.getName(), value);
}
};
}
}
Подскажите, правильно ли это?