Мой проект о реализации гиперграфа в JavaКак избежать дублирования кода в этом случае?
Мои HyperGraph содержат различные типы гиперребро в зависимости от типа вершины, что у меня есть
Vertex Тип: изображения, теги ...
гиперребро = Однородная (касаются вершин того же типа)/Гетерогенного (касаются вершин другого типа)
Однородных гиперребро = изображение-изображений гиперребро/Tag-тег гиперребро
Тхи s является быстро рисовать UML диаграмму
это мой код
public interface HomogenousHyperedge< T extends Vertex<L>, L> extends Hyperedge {
public abstract List<T> searchNearstNeighborsVertex(
Hypergraph hypergraph, T vertex);
}
public class ImageImageHyperedge implements
HomogenousHyperedge<ImageVertex, Map<String,Instance>> {
@Override
public List<ImageVertex> searchNearstNeighborsVertex(Hypergraph hypergraph,
ImageVertex vertex) {
return null;
}
}
проблема в классе ImageImageHyperEdge я должен знать, что тип функции, основанный на ней, я буду искать ближайших соседей ImageVertexя не могу передать его в абстрактный метод супер интерфейс, потому что TagTagHyperEdge класс не нужен ему
и если я заменю класс ImageImageHyperEdge от {featureOneHyperEdge класс ... featureFiveHyperEdge класс} (в котором я знаю тип объекта) это будет дублированием кода, как это тот же ближайших соседи алгоритм поиска
функции = низкая функция уровня изображения (цвет гистограмма, например)
у меня 5 типа низкого уровня feature
Я буду использовать каждый для поиска ближайшего ne ighbors моего текущего изображения
Всех функции снабжены в простом текстовом файле
тот же алгоритм используется для поиска ближайших соседей
только файл изменяется каждый раз, когда
Я не уверен, что правильно понял, что вам нужно, так что это может пойти в любом случае. У вас есть базовый класс BaseFeatureHyperEdge, который будет реализовывать алгоритм поиска. И выложите какой-то метод шаблона, который будет переопределен FeatureOneHyperEdge, FeatureTwoHyperEdge и т. Д. Этот метод шаблона должен предоставлять только тип функции, на которой основан поиск. Надеюсь, поможет? –
@DenisRosca первая идея, которую я получил, - использовать шаблон стратегии Я думаю, что он похож на шаблон шаблона вы можете объяснить больше, чем вы идете, пожалуйста? – nawara
Я предполагаю, что добавлю ответ –