Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

รูปแบบการออกแบบคอมโพสิตใน C++


รูปแบบคอมโพสิตถูกใช้ในที่ที่เราจำเป็นต้องปฏิบัติต่อกลุ่มของวัตถุในลักษณะที่คล้ายคลึงกันเป็นวัตถุเดียว รูปแบบคอมโพสิตประกอบด้วยออบเจกต์ในแง่ของโครงสร้างแบบต้นไม้เพื่อแสดงส่วนต่างๆ เช่นเดียวกับลำดับชั้นทั้งหมด รูปแบบการออกแบบประเภทนี้อยู่ภายใต้รูปแบบโครงสร้างเนื่องจากรูปแบบนี้สร้างโครงสร้างต้นไม้ของกลุ่มวัตถุ

รูปแบบนี้สร้างคลาสที่มีกลุ่มของวัตถุของตัวเอง คลาสนี้มีวิธีแก้ไขกลุ่มของวัตถุเดียวกัน

เรากำลังสาธิตการใช้รูปแบบผสมผ่านตัวอย่างต่อไปนี้ ซึ่งเราจะแสดงลำดับชั้นพนักงานขององค์กร

รูปแบบการออกแบบคอมโพสิตใน C++

ที่นี่เราจะเห็นว่าคอมโพสิทและลีฟทั้งสองคลาสกำลังใช้งานคอมโพเนนต์ ส่วนที่สำคัญคือคลาสคอมโพสิต ซึ่งยังมีออบเจ็กต์ส่วนประกอบที่แสดงโดยความสัมพันธ์ขององค์ประกอบ

โค้ดตัวอย่าง

#include <iostream>
#include <vector>
using namespace std;
class PageObject {
   public:
      virtual void addItem(PageObject a) { }
      virtual void removeItem() { }
      virtual void deleteItem(PageObject a) { }
};
class Page : public PageObject {
   public:
      void addItem(PageObject a) {
      cout << "Item added into the page" << endl;
   }
   void removeItem() {
      cout << "Item Removed from page" << endl;
   }
   void deleteItem(PageObject a) {
      cout << "Item Deleted from Page" << endl;
   }
};
class Copy : public PageObject {
   vector<PageObject> copyPages;
   public:
      void AddElement(PageObject a) {
         copyPages.push_back(a);
      }
      void addItem(PageObject a) {
         cout << "Item added to the copy" << endl;
      }
      void removeItem() {
         cout << "Item removed from the copy" << endl;
      }
      void deleteItem(PageObject a) {
         cout << "Item deleted from the copy";
      }
};
int main() {
   Page p1;
   Page p2;
   Copy myCopy;
   myCopy.AddElement(p1);
   myCopy.AddElement(p2);
   myCopy.addItem(p1);
   p1.addItem(p2);
   myCopy.removeItem();
   p2.removeItem();
}

ผลลัพธ์

Item added to the copy
Item added into the page
Item removed from the copy
Item Removed from page