2011-10-21 7 views
7

मैं एक बेस क्लास बनाना चाहता हूं कि मेरे कार्यक्रम में सभी वर्गों का विस्तार होगा। एक चीज जो मैं करना चाहता था वह ऑब्जेक्ट के अंदर सभी इंस्टेंस चर को स्टोर करने के लिए एक समान तरीका ढूंढना था।इंस्टेंस चर को स्टोर करने के लिए हैश मैप का उपयोग करें?

जो मैंने किया है वह हैशैप का उपयोग ऑब्जेक्ट के लिए कुंजी/मान जोड़े को स्टोर करने के लिए करना है और फिर उन मानों को एक प्राप्त करने और सेट विधि के माध्यम से बेनकाब करना है।

कोड मैं इस के लिए है कि अब तक इस प्रकार है:

package ocaff; 

import java.util.HashMap; 

public class OcaffObject { 

    private HashMap<String, Object> data; 

    public OcaffObject() { 
     this.data = new HashMap<String, Object>(); 
    } 

    public Object get(String value) { 
     return this.data.get(value); 
    } 

    public void set(String key, Object value) { 
     this.data.put(key, value); 
    } 

} 

जबकि कार्यात्मक इस काम करता है, मैं अगर वहाँ इस कार्यान्वयन के साथ किसी भी असली मुद्दे हैं उत्सुक हूँ या ऐसा करने के लिए अगर वहाँ एक बेहतर तरीका है इस?

मेरे दिन के दिन में मैं एक PHP प्रोग्रामर हूं और मेरा लक्ष्य जावा में PHP में उपयोग की जाने वाली कार्यक्षमता की नकल करना था।

+0

निश्चित रूप से - आप यह कर सकते हैं। – Coffee

+3

आप * ऐसा कर सकते हैं, लेकिन क्यों? यदि आप एक हैश मानचित्र के आसपास गुजरना चाहते हैं, तो बस एक हैश मानचित्र के चारों ओर पास करें। आईएमओ यदि आप ओओपी के बहुत सारे हैं तो आप लाभ खो देते हैं यदि आप सबकुछ नक्शे में फेंक देते हैं, हालांकि। –

उत्तर

13

मुझे नहीं लगता कि यह आपके मतलब से निपटने का एक अच्छा तरीका है। जावा में प्रोग्रामिंग मेरे दृष्टिकोण से, php में प्रोग्रामिंग से काफी अलग है।

स्वच्छ ऑब्जेक्ट उन्मुख प्रोग्रामिंग के वास्तविक प्रतिमान का उपयोग करके आपको चीजों को साफ और दृढ़ता से टाइप करने की आवश्यकता है।

इस तकनीक के साथ कुछ समस्याएं मेरे दिमाग में आती हैं, यहां कुछ हैं, महत्व के क्रम में नहीं।

  1. आपके साथ पहली समस्या यह है कि प्रदर्शन और स्मृति पदचिह्न है: यह बहुत सारी स्मृति का उपभोग करेगा और बहुत बुरी तरह प्रदर्शन करेगा।

  2. दूसरी समस्या समरूपता है, हैश मैप थ्रेड सुरक्षित नहीं है।

  3. तीसरी समस्या प्रकार सुरक्षा है: आपके पास अब और सुरक्षा की आवश्यकता नहीं है, आप जो भी चाहें उस क्षेत्र में लिख सकते हैं और कोई भी इसे वास्तविक विरोधी पैटर्न की जांच नहीं कर रहा है।

  4. चौथी समस्या डीबगिंग है ... आपके कोड को डीबग करना मुश्किल होगा।

  5. पांचवीं समस्या यह है कि हर कोई अपना नाम जानने वाले किसी भी क्षेत्र को लिख और पढ़ सकता है।

  6. छठी समस्या: जब आप हैश सेट में किसी फ़ील्ड का नाम बदलते हैं तो आपको किसी भी प्रकार की संकलन समय त्रुटि नहीं मिलती है, आपको केवल अजीब रन-टाइम व्यवहार मिलता है। रिफैक्टरिंग असंभव हो जाएगी।

टाइप किए गए फ़ील्ड अधिक उपयोगी और साफ हैं।

+2

+1 मुझे आपकी समस्याओं की सूची पसंद है। मुझे विशेष रूप से लगता है कि 3, 4, 5 और 6 1 और 2 से अधिक महत्वपूर्ण हैं, लेकिन उन 2 को भी जागरूक होना महत्वपूर्ण है। – corsiKa

+0

हां सहमत हैं, अंतिम अंक अधिक महत्वपूर्ण हैं :) लेकिन प्रदर्शन एक मुद्दा हो सकता है जब यह वर्ग उपयोगकर्ता के लिए आधार वर्ग है उदाहरण के लिए और आपके पास 1000000 उपयोगकर्ता ऑनलाइन हैं :) lol :) –

+0

यह बिल्कुल जानकारी का प्रकार है जो मैं था खोज रहे हैं मुझे खुशी है कि मैंने अपनी परियोजना में बहुत दूर जाने से पहले पूछा था। धन्यवाद। –

1

यदि आप इसके लिए कक्षा बनाने के लिए समय ले रहे हैं, तो मैं बस कक्षा के सदस्यों के रूप में आपको जो कुछ चाहिए, उसे जोड़ दूंगा। यह आपको अपने वर्ग के सदस्यों की समय-समय पर जांच करने, आपके सूक्ष्म बग को बहुत कम करने देगा।

संबंधित मुद्दे