Composite_Pattern - 8BitsCoding/RobotMentor GitHub Wiki
νμΌ μμ€ν μ ꡬμ±ν΄λ³΄μ.
int main() {
Folder *
root = new Folder("root"),
home = new Folder("home"),
garam = new Folder("garam"),
picture = new Folder("picture"),
doc = new Folder("doc"),
usr = new Folder("usr");
File *
track1 = new File("track1"),
track2 = new File("track2"),
pic1 = new File("pic1"),
doc1 = new File("doc1"),
java = new File("java");
// ν΄λμμ ν΄λ, νμΌ λ£μ μ μλλ‘ μμνκ³ μΆλ€.
root->addComponent(home);
home->addComponent(garam);
//μ΄λ°μμΌλ‘
}
class Component {
public:
Component(string name) {
this->name = name;
}
string getName() {
return name;
}
void setName(string name) {
this=>name = name;
}
private:
string name;
};
class Folder : public Component {
public:
Folder(string name) : Component(name){}
List<Component> children;
bool addComponent(Component component) {
return children.add(component);
}
bool removeComponent(Component component) {
return children.remove(component);
}
List<Component> getChildren() {
return children;
}
};
class File : public Component {
public:
File(string name) : Component(name) {}
Object getData() {
return data;
}
void setData(Object data) {
this->data = data;
}
private:
Object data;
}