首页 > 代码库 > Design Pattern Facade 门面设计模式
Design Pattern Facade 门面设计模式
Facade设计模式主要作用是因为有个很难使用的类,然后要设计一个新类,整理好这个类,使得其更好使用。
比如有类如此:
class MessyClass { char *name; public: MessyClass() : name(new char[3]) { for (int i = 0; i < 3; i++) { name[i] = ' '; } } ~MessyClass() { delete [] name; } void setFirstName(char a) { name[0] = a; } void setSecName(char b) { name[1] = b; } void setThirdName(char c) { name[2] = c; } char *getName() { return name; } };
这样需要一个字符一个字符给这个类命名,那么就很繁琐。
可以使用一个类把这样的命名简化为一个字符串:
//Facade class class NewNoNMessyClass { MessyClass messy; public: NewNoNMessyClass() : messy() { } void setName(string n) { if (n.size() > 0) messy.setFirstName(n[0]); if (n.size() > 1) messy.setSecName(n[1]); if (n.size() > 2) messy.setThirdName(n[2]); } string getName() { return messy.getName(); } };
这样只需要一个字符串就能给这个类命名了。
也可以这样设计:
class NewNoNMessyClass_2 { MessyClass *messy; public: NewNoNMessyClass_2(MessyClass *me) : messy(me) { } void setName(string n) { if (n.size() > 0) messy->setFirstName(n[0]); if (n.size() > 1) messy->setSecName(n[1]); if (n.size() > 2) messy->setThirdName(n[2]); } string getName() { return messy->getName(); } };
这样仍然可以使用原来的MessyClass来操作,不过通过这个新类的函数可以方便给这个类命名。
测试:
void Faced_Run() { NewNoNMessyClass nonMessy; nonMessy.setName("LOVE"); cout<<nonMessy.getName()<<endl; MessyClass mec;//Orignal messy class NewNoNMessyClass_2 non2(&mec);//use new class to tide up messy class non2.setName("He"); cout<<mec.getName()<<endl <<non2.getName()<<endl; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。