标签:des class blog code http ext
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(); } };
测试:
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; }
Design Pattern Facade 门面设计模式,布布扣,bubuko.com
标签:des class blog code http ext
原文地址:http://blog.csdn.net/kenden23/article/details/28391095