1. 程式人生 > >component設計模式

component設計模式

這一部分是從侯捷老師的視訊學來的,我運用還不是很熟練,主要意思是composite類既要能夠呼叫primitive類也要能呼叫本身,解決的辦法是,讓這兩個類共同繼承父類component,父類指標可以指向子類,但子類不能指向父類。


#include<iostream>
#include<vector>
using namespace std;
class component {
    int value;
public:
    component(int val) { value = val; }
    virtual void add(component *){}
    int
print() { return value; } }; class primitive :public component{ public : primitive(int val) :component(val) {} }; class composite :public component { vector<component*>c; public: composite(int val):component(val){} void add(component *elem) { c.push_back(elem); } void
print() { for (auto iter : c) cout << iter->print()<<" "; } }; int main(void) { primitive *pr = new primitive(10); composite c(12); composite *cr = &c; c.add(pr); c.add(cr); c.print(); return 0; }