void Client::main(std::string args[]) { //定义所有的组合对象 Component *root = new Composite("服装"); Component *c1 = new Composite("男装"); Component *c2 = new Composite("女装"); //定义所有的叶子对象 Component *leaf1 = new Leaf("衬衣"); Component *leaf2 = new Leaf("夹克"); Component *leaf3 = new Leaf("裙子"); Component *leaf4 = new Leaf("套装"); //按照树的结构来组合组合对象和叶子对象 root->addChild(c1); root->addChild(c2); c1->addChild(leaf1); c1->addChild(leaf2); c2->addChild(leaf3); c2->addChild(leaf4); //创建ObjectStructure ObjectStructure *os = new ObjectStructure(); os->setRoot(root); //调用ObjectStructure来处理请求功能 Visitor *psVisitor = new PrintNameVisitor(); // root.accept(psVisitor); os->handleRequest(psVisitor); }
void VisitorMain::main(std::string args[]) { ObjectStructure* os = new ObjectStructure(); Person* man = new Man(); Person* woman = new Woman(); os->attach(man); os->attach(woman); Success* v = new Success(); os->display(v); Fail* f = new Fail(); os->display(f); }
int main() { ConcreteVisitor visitor; ConcreteElementA elementA; ConcreteElementB elementB; ObjectStructure objectStructure; objectStructure.addElement(&elementA); objectStructure.addElement(&elementB); objectStructure.accept(visitor); return 0; }
void Client::main(std::string args[]) { //创建ObjectStructure ObjectStructure *os = new ObjectStructure(); //创建要加入对象结构的元素 Element *eleA = new ConcreteElementA(); Element *eleB = new ConcreteElementB(); //把元素加入对象结构 os->addElement(eleA); os->addElement(eleB); //创建访问者 Visitor *visitor = new ConcreteVisitor1(); //调用业务处理的方法 os->handleRequest(visitor); }