मैं अपने सर्वश्रेष्ठ पर व्याख्या करने की कोशिश करूंगा।स्थिर संदर्भ में विशिष्ट वस्तुओं के साथ सामान्य वर्ग का उपयोग कैसे करें?
मैं प्ले फ्रेमवर्क 2 का उपयोग करता हूं, और मैं बहुत सी सीआरयूडी क्रियाएं करूंगा। उनमें से कुछ पहचान में होंगे, इसलिए मैं किस और डीआरवाई करना चाहता हूं इसलिए पहले मैं list
, 10, create
, update
और delete
विधियों के साथ सामान्य वस्तु के साथ एक सार वर्ग के बारे में सोच रहा था, और यह निर्दिष्ट करके इस वर्ग को विस्तारित करता हूं
public abstract class CrudController extends Controller {
protected static Model.Finder<Long, Model> finder = null;
protected static Form<Model> form = null;
public static Result list() {
// some code here
}
public static Result details(Long id) {
// some code here
}
public static Result create() {
// some code here
}
public static Result update(Long id) {
// some code here
}
public static Result delete(Long id) {
// some code here
}
}
और एक वर्ग है कि CRUD का उपयोग करेगा:: वस्तु (मॉडल & फॉर्म) का उपयोग करने के
public class Cities extends CrudController {
protected static Model.Finder<Long, City> finder = City.find;
protected static Form<City> form = form(City.class);
// I can override a method in order to change it's behavior :
public static Result list() {
// some different code here, like adding some where condition
}
}
यह है कि अगर मैं एक स्थिर संदर्भ में नहीं था काम करेगा।
लेकिन चूंकि यह मामला है, मैं कैसे कर सकता हूं?
क्यों इंस्टेंस विधियों पर स्विच न करें? विरासत जावा में कक्षा विधियों पर काम नहीं करती है। – Vlad
संरचना के साथ विरासत को प्रतिस्थापित करने का एक और विचार हो सकता है: केवल क्रूड कंट्रोलर के उदाहरण हैं और ऑपरेशन को विशिष्ट-निर्दिष्ट निहित ऑब्जेक्ट में प्रतिनिधि दें। (यह सब निश्चित रूप से आपके डिजाइन पर निर्भर करता है।) – Vlad
@Vlad: पहले प्रश्न के लिए, मैं नहीं कर सकता, नियंत्रक के लिए स्थैतिक विधि की आवश्यकता है। अब दूसरे के लिए, मुझे समझ में नहीं आ रहा है, क्या आप विस्तारित कर सकते हैं (या एक नया उत्तर बना सकते हैं)? –