मेरे परियोजना जावा में एक hypergraph को लागू करने के बारे में हैइस मामले में कोड के दोहराव से कैसे बचें?
मेरे hypergraph शिखर प्रकार है कि मैं
वर्टेक्स प्रकार के आधार पर hyperEdge के विभिन्न प्रकार के होते हैं: छवि, टैग ...
HyperEdge = सजातीय (एक ही प्रकार के शिखर) संबंधित/विषम (विभिन्न प्रकार के शिखर)
सजातीय HyperEdge = छवि छवि HyperEdge/टैग टैग hyperEdge
थी संबंधित एक जल्दी से यूएमएल आरेख आकर्षित
है यह मेरा कोड
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 प्रकार है सुविधा
मैं प्रत्येक को निकटतम नी खोजने के लिए उपयोग करूंगा मेरे वर्तमान छवि
सभी सुविधा का ighbors एक सरल शाब्दिक फ़ाइल
में स्टॉक कर रहे हैं एक ही एल्गोरिथ्म निकटतम पड़ोसियों खोज करने के लिए प्रयोग किया जाता है
केवल फ़ाइल हर बार
मुझे यकीन नहीं है कि मुझे आपकी जरूरत के अनुसार सही ढंग से समझ में आया है, इसलिए यह किसी भी तरह से जा सकता है। क्या आपके पास बेस क्लास बेसफेचर हैपरएज है जो खोज एल्गोरिदम लागू करेगा। और किसी प्रकार की टेम्पलेट विधि का पर्दाफाश करें जिसे फ़ीचरऑनहाइपरएज, फीचरटवो हाइपरएज और अन्य द्वारा ओवरराइड किया जाएगा। यह टेम्पलेट विधि केवल उस सुविधा का प्रकार प्रदान करेगी जिस पर खोज आधारित है। आशा करता हूँ की ये काम करेगा? –
@DenisRosca मुझे प्राप्त पहला विचार रणनीति पैटर्न का उपयोग करना है, मुझे लगता है कि यह टेम्पलेट पैटर्न के समान है क्या आप कृपया अधिक विचार कर सकते हैं? – nawara
मुझे लगता है कि मैं एक उत्तर –