यह हो सकता है कि आप पोस्टेल के कानून के एक अपवाद को सुन सकते हैं : "जो आप भेजते हैं उसमें रूढ़िवादी बनें, जो आप स्वीकार करते हैं उसमें उदार हैं।"
अधिकतर यह कोड पुन: प्रयोज्य को अधिकतम करने के बारे में है। यह प्रदर्शित करने के लिए मामलों के साथ आना आसान है कि यह क्यों मदद करता है। Iterable<T>
एक उदाहरण के रूप में जावा पर विचार करें । यदि केवल एक चीज जो आपकी विधि करती है T
, वह सभी s के माध्यम से पुनरावृत्त होती है , तो Iterable<T>
आपके पैरामीटर प्रकार के रूप में आपको 60 से अधिक अंतर्निहित कक्षाओं के साथ उस पद्धति का उपयोग करने की अनुमति मिलती है, न कि किसी कस्टम वर्ग का उल्लेख करने के लिए जो इंटरफ़ेस को लागू करता है। यदि आप इसे सीमित करते हैं, कहते हैं, Vector<T>
तो आपके पद्धति को कॉल करने वाले किसी भी कोड को Vector<T>
पहले बदलना होगा ।
दूसरी ओर, लौटने एक Iterable<T>
एक विधि से कोड की राशि है कि उन है कि एक लेने के लिए अपनी वापसी मान का उपयोग कर सकते हैं की सीमा Iterable<T>
पैरामीटर। आप एक बहुत ठोस प्रकार वापस करते हैं, की तरह Vector<T>
है, तो अपने वापसी मान कोई भी तरीका है कि एक लेता में पारित किया जा सकता Serializable
, Cloneable
, Iterable<T>
, Collection<T>
, List<T>
, RandomAccess
, Vector<T>
, AbstractList<T>
, या AbstractCollection<T>
, और यह उम्मीद के रूप में काम करेंगे।