每日总结

软件设计模式 桥接模式:

 

 

 

 #include <iostream>
#include <vector>
using namespace std;
class Component {
public:
    virtual void opration()=0;
    virtual void add(Component* c)=0;
    virtual void remove(Component* c)=0;
    virtual Component* getChild(int i)=0;
};
class Leaf :public Component{
public:
    vector<Component*> list;
     void opration();
     void add(Component* c);
     void remove(Component* c);
     Component* getChild(int i);
};
class Composite :public Component{
public:
    vector<Component*> list;
     void opration();
     void add(Component *c);
     void remove(Component *c);
     Component* getChild(int i);
};
void Composite::add(Component *c) {
    cout << "添加文件\n";
    list.push_back(c);
}
void Composite::remove(Component *c) {
    cout << "移除文件\n";
}
Component* Composite::getChild(int i) {
    return list[i];
}
void Composite::opration() {
    cout << "遍历文件夹\n";
    for (int i = 0; i < list.size(); i++) {
        cout << "进入文件夹或打开文件\n";
        list[i]->opration();
;    }
}
void Leaf::add(Component* c) {
    cout << "添加文件\n";
    list.push_back(c);
}
void Leaf::remove(Component* c) {
    cout << "移除文件\n";
}
void Leaf::opration() {
    cout << "文件打开\n";
}
Component* Leaf::getChild(int i) {
    return list[i];
}
int main() {
    Composite *cm = new Composite();
    Component *a = new Composite();
    Component *b = new Leaf();
    Component *c = new Leaf();
    //遍历
    cm->opration();
    cm->add(a);
    cm->add(b);
    cm->add(c);
    a->add(b);
    a->add(c);
    cm->opration();
    a->remove(b);
    b->remove(c);
    cm->remove(b);
    cm->remove(a);
    cout << "遍历文件夹\n";
    /*cm->opration();*/
    system("pause");
    return 0;
    
}



posted @ 2021-10-06 12:31  chenghaixinag  阅读(25)  评论(0编辑  收藏  举报