2009-06-09 6 views
9

मैंने देखा है कि some people संपत्ति बदलें पर्यवेक्षक पैटर्न के लिए समर्थन के साथ सेम लिखें।मैं एक वेब अनुप्रयोग के लिए एक जावा सेम में PropertyChangeSupport और PropertyChangeListener के लिए समर्थन जोड़ने चाहिए?

import java.beans.PropertyChangeListener; 
import java.beans.PropertyChangeSupport; 
import java.io.Serializable; 

public class SampleBean implements Serializable { 
    public static final String PROP_SAMPLE_PROPERTY = "sampleProperty"; 
    private String sampleProperty; 
    private PropertyChangeSupport propertySupport; 

    public ChartBean() { 
     propertySupport = new PropertyChangeSupport(this); 
    } 

    public String getSampleProperty() { 
     return sampleProperty; 
    } 

    public void setSampleProperty(String value) { 
     String oldValue = sampleProperty; 
     sampleProperty = value; 
     propertySupport.firePropertyChange(PROP_SAMPLE_PROPERTY, oldValue, sampleProperty); 
    } 


    public void addPropertyChangeListener(PropertyChangeListener listener) { 
     propertySupport.addPropertyChangeListener(listener); 
    } 

    public void removePropertyChangeListener(PropertyChangeListener listener) { 
     propertySupport.removePropertyChangeListener(listener); 
    } 
} 

हालांकि, मुझे लगता है कि पर्यवेक्षक पैटर्न पढ़ने आमतौर पर वेब अनुप्रयोगों की राज्यविहीन प्रकृति के कारण, वेब आधारित MVC पैटर्न में नहीं किया जाता है याद है।

क्या वेब अनुप्रयोग जावा बीन्स में उपरोक्त पैटर्न का पालन करना एक अच्छा अभ्यास है?

उत्तर

10

ईमानदार होने के लिए केवल परेशान होने के लिए यदि आपको वास्तव में सुविधा की आवश्यकता है। अधिकांश वेब अनुप्रयोगों को PropertyChangeSupport की आवश्यकता नहीं है। मैं वास्तव में याद नहीं कर सकता कि इसे किसी भी वेब ऐप में इस्तेमाल किया जा रहा है जिसे मैंने देखा है। मैंने केवल इसे स्विंग एप्लिकेशन का उपयोग किया है।

एक वेब अनुप्रयोग में एक ठेठ bean एक बहुत अल्पकालिक वस्तु, एकल अनुरोध की सेवा और फिर कचरा एकत्र होने के लिए शून्य करने के लिए त्याग करने के लिए तैयार है। मुख्य मुद्दा यह है कि वेब अनुप्रयोग मेरे प्रकृति समवर्ती और बहु ​​उपयोगकर्ता हैं, यह श्रोताओं और घटनाओं आदि के साथ लंबे समय तक जीवित वस्तुओं को स्वयं नहीं उधार देता है।

+2

हाँ, आपके द्वारा सूचीबद्ध सभी सामान और वेब अनुप्रयोगों की स्टेटलेस प्रकृति मुझे यह सोचती है कि इस डोमेन में पर्यवेक्षक पैटर्न बेकार है। –

+0

आप पूरी तरह से सही हैं लेकिन मैं सामान्य संशोधन परिदृश्य के संबंध में आपसे एक सुझाव चाहता हूं। जहां आपके पास संशोधन के लिए 30 से 50 विषम फ़ील्ड खोले गए हैं और उपयोगकर्ता ने केवल 2 फ़ील्ड बदल दिए हैं, लेकिन मेरा सिस्टम उन सभी फ़ील्ड को अपडेट करेगा जो वास्तव में संशोधित नहीं हैं। मेरा प्वाइंट मिला ..? – Logicalj

+0

वास्तव में नहीं ... ऐसा लगता है जैसे आपको एक नया प्रश्न पूछने की आवश्यकता है।यहां लिंक पेस्ट करने के लिए स्वतंत्र महसूस करें ताकि मुझे एक अधिसूचना मिल सके –

3

PropertyChangeListener वैसे भी खराब डिजाइन का है - वह जादू स्ट्रिंग तुलना । ChangeListener (या समान) के साथ एक साधारण मॉडल के लिए बहुत बेहतर जाना और समग्र मॉडल के साथ एक साथ लाएं।

जब तक आप कुछ इंटरैक्टिव और कॉमेटी नहीं कर रहे हैं, तो यह किसी वेब एप्लिकेशन में बहुत अधिक समझ में नहीं आता है। आपके पास आम तौर पर एक पुल मॉडल होता है जहां सभी मौजूदा जानकारी एक बार में बंडल की जाती है। यह समझ में आता है कि आपके पास कैश हैं।

आप वेब एप्लिकेशन के समान डेस्कटॉप एप्लिकेशन भी लिख सकते हैं। कोई भी परिवर्तन (या परिवर्तनों की श्रृंखला) और जीयूआई सिंक। यह काफी कॉम्पैक्ट साबित होता है। इसके अलावा प्रदर्शन लागत को बड़े बदलावों (जैसे खिड़की खोलना) के महत्वपूर्ण समय से स्थानांतरित किया जाता है, जहां गैर-महत्वपूर्ण समय पर फैलता है जहां आपके पास चक्र जलते हैं।

3

1) संपत्ति परिवर्तन समर्थन को तब तक न जोड़ें जब तक आपको पता न हो कि आपको इसकी आवश्यकता होगी।

2) अपने सेम की तुलना में अधिक कुछ भी नहीं के साथ सिर्फ एक मूल्य वस्तु है getters/setters/बराबर है/hashCode, तो संपत्ति परिवर्तन की घटनाओं को लागू करने के लिए इस्तेमाल सलाह के साथ वस्तु रैप करने के लिए एक AOP ढांचे (मैं स्प्रिंग की तरह) के उपयोग पर विचार /समर्थन। इस तरह आपका बीन तर्क के साथ unpolluted रहता है जो केवल कुछ संदर्भों (आमतौर पर यूआई) में आवश्यक है और यह विभिन्न संदर्भों में बदल सकता है। यूआई यह प्रयोग किया जाता है, लेकिन यह सर्वर टीम (वहाँ नहीं थे) भ्रमित और सिर्फ शोर, जहां उसका उपयोग नहीं किया गया था - यह एक सबक मैंने सीखा है जब मैं किसी विशेष एप्लिकेशन के लिए सभी डोमेन सेम करने के लिए संपत्ति परिवर्तन समर्थन जोड़ा है।

मैं यह भी मानता हूं कि कभी-कभी आपको व्यक्तिगत गुणों को सुनने की आवश्यकता नहीं होती है, यह जानने के लिए पर्याप्त है कि वस्तु में कुछ बदल गया है।

+0

एओपी ढांचा एक अच्छा विकल्प है। धन्यवाद। –

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