2011-06-08 13 views
5

ऐसा लगता है कि यदि मैं कड़ाई से एकल उत्तरदायित्व सिद्धांत का पालन करता हूं, तो मुझे बदलने वाली कार्यक्षमताओं को विभाजित करने के लिए सार्वजनिक गेटर्स जोड़ना पड़ सकता है। मेरे लिए, यह आंतरिक संरचना वस्तुओं को उजागर करके encapsulation का उल्लंघन करता प्रतीत होता है।क्या अकेले उत्तरदायित्व सिद्धांत का पालन करना encapsulation का उल्लंघन करता है?

उदाहरण के लिए, मान लें कि मेरे पास एक कक्षा है जो अपलोड की गई फ़ाइल का प्रतिनिधित्व करती है। अतीत में मैं क्रम में toHtml() की तरह के तरीकों का इस्तेमाल किया है टिककर खेल से बचने और कैप्सूलीकरण बनाए रखने के लिए:

public class UploadedFile() { 
    private String filename; 
    private String uri; 
    public String toHtml() { 
    return <html string>; 
} 

लेकिन मैं देख सकता था, जहां एक बहस कर सकते हैं कि, SRP के आधार पर, आप फ़ाइल नाम के लिए ही टिककर खेल में शामिल करना चाहिए और यूरी और कहीं और एचटीएमएल उत्पन्न करें।

उत्तर

1

इस स्थिति में, filename और uri अपने UploadedFile() वर्ग के गुणों कि यह छिपा रखने के लिए विसंगत होगा होगा, इसलिए उपलब्ध कराने के उन लोगों के लिए ही टिककर खेल बिल्कुल कैप्सूलीकरण का उल्लंघन नहीं करता, मेरी राय में।

यदि आपने filename और uri सार्वजनिक फ़ील्ड बनाए हैं और केवल उन्हें सीधे एक्सेस किया है तो encapsulation उल्लंघन होगा।

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