मेरे पास findByCriteria
विधि के साथ इंटरफ़ेस ProductService
है। इस विधि में productName
, maxCost
, minCost
, producer
और इसी तरह के नालीबल पैरामीटर की एक लंबी सूची थी।क्या जावा में इंटरफेस के अंदर नेस्टेड क्लास घोषित करने में कुछ बुरा है?
मैंने Parameter Object पेश करके इस विधि को दोबारा प्रतिक्रिया दी। मैं कक्षा SearchCriteria
बनाया है और अब विधि हस्ताक्षर इस तरह दिखता है:
findByCriteria (SearchCriteria criteria)
मैंने सोचा था कि SearchCriteria
के उदाहरण केवल, विधि कॉल द्वारा बनाई गई हैं और केवल findByCriteria
विधि के अंदर उपयोग किया जाता है अर्थात्:
void processRequest() {
SearchCriteria criteria = new SearchCriteria()
.withMaxCost (maxCost)
.......
.withProducer (producer);
List<Product> products = productService.findByCriteria (criteria);
....
}
और
List<Product> findByCriteria(SearchCriteria criteria) {
return doSmthAndReturnResult(criteria.getMaxCost(), criteria.getProducer());
}
तो मैं SearchCriteria
के लिए एक अलग सार्वजनिक कक्षा नहीं बनाना चाहता था और इसेके अंदर रखूं:
public interface ProductService {
List<Product> findByCriteria (SearchCriteria criteria);
static class SearchCriteria {
...
}
}
क्या इस इंटरफ़ेस के साथ कुछ बुरा है? आप SearchCriteria
कक्षा कहां रख सकते हैं?
आपको सर्चक्रिटिया को स्थैतिक, सभी सदस्य प्रकार के इंटरफेस के रूप में चिह्नित करने की आवश्यकता नहीं है निहित स्थिर (और सार्वजनिक) हैं। – Oak