मैं एक अलग दृष्टिकोण का सुझाव देने जा रहा हूं, भले ही यह कुछ पुराना प्रश्न है। दो इकाइयाँ बनाने के बजाय, आपको तीन बनाना चाहिए।
FileMetadata बनाएं, जिसमें नाम, माइमटाइप आदि हों। FileContent बनाएं, जिसमें सामग्री हो। फिर, एक तीसरी इकाई फ़ाइल बनाएं जिसमें अन्य प्रकारों में से प्रत्येक के साथ एक-से-एक कनेक्शन हो, और इसे ऐसे तरीकों का एक समूह दें जो उप-इकाई पर मिलान विधियों को आसानी से कॉल करें।
तो उदाहरण के लिए फ़ाइल में, सेटनाम विधि इस तरह दिखेगी:
public function setName() {
$this->getFileMetadata()->getName();
}
और सेट इस तरह दिखेगा:
public function setName( $name ) {
$this->getFileMetadata()->setName( $name );
}
फ़ाइल इकाई के निर्माता को निर्माण पर एक नया FileMetadata और एक नया FileContent बनाना चाहिए और एक setFilemetadata या setFilecontent विधि नहीं होनी चाहिए; इन दो संस्थाओं को आपके आवेदन से पूरी तरह से सुरक्षित रखा जाना चाहिए।
अब आपके पास फ़ाइल इकाई है, जो ठीक वैसे ही संभालती है जैसे आप चाहते हैं (एक एकल इकाई, कोई अतिरिक्त उप-इकाई नहीं) जो अभी भी दो (अच्छी तरह से, तीन वास्तव में) अलग-अलग तालिकाओं में बड़े करीने से संग्रहीत है।