खोज…


परिचय

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

टिप्पणियों

कंपोजिट पैटर्न लागू होता है जब वस्तुओं का एक हिस्सा-पूरा पदानुक्रम होता है और एक क्लाइंट को वस्तुओं के साथ समान रूप से निपटने की आवश्यकता होती है, इस तथ्य की परवाह किए बिना कि एक वस्तु एक पत्ती (साधारण वस्तु) या एक शाखा (समग्र वस्तु) हो सकती है।

एक गूंगा फ़ाइल प्रबंधक के लिए छद्म कोड

/* 
* Component is an interface 
* which all elements (files,
* folders, links ...) will implement
*/
class Component
{
public:
    virtual int getSize() const = 0;
};

/*
* File class represents a file
* in file system.   
*/
class File : public Component
{
public:
    virtual int getSize() const {
        // return file size
    }   
};

/*
* Folder is a component and 
* also may contain files and 
* another folders. Folder is a
* composition of components
*/
class Folder : public Component
{
public:
    void addComponent(Component* aComponent) {
        // mList append aComponent;
    }
    void removeComponent(Component* aComponent) {
        // remove aComponent from mList
    }
    virtual int getSize() const {
        int size = 0;
        foreach(component : mList) {
            size += component->getSize();
        }
        return size;
    } 

private:
    list<Component*> mList;
};


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow