Design Pattern Facade 门面设计模式
2014-06-04 09:48
387 查看
Facade设计模式主要作用是因为有个很难使用的类,然后要设计一个新类,整理好这个类,使得其更好使用。
比如有类如此:
这样需要一个字符一个字符给这个类命名,那么就很繁琐。
可以使用一个类把这样的命名简化为一个字符串:
这样只需要一个字符串就能给这个类命名了。
也可以这样设计:
这样仍然可以使用原来的MessyClass来操作,不过通过这个新类的函数可以方便给这个类命名。
测试:
比如有类如此:
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; }
相关文章推荐
- [译]The Facade Pattern外观设计模式 from Chapter 6 of《Design Patterns Explained》
- 设计模式之(五)----门面模式【Facade Pattern】
- 设计模式——门面模式【Facade Pattern】
- 您的设计模式——门面模式【Facade Pattern】
- 设计模式第十课 门面模式Facade Pattern
- 开发设计模式(九)门面模式(Facade Pattern)
- JAVA设计模式——第 7 章 门面模式【Facade Pattern】(转)
- 【门面设计模式】的故事来源(Facade Pattern)
- 门面设计模式(Facade Pattern)
- 23种设计模式之-----门面模式(Facade Pattern)
- Java设计模式——门面(外观)模式(Facade Pattern)
- Java设计模式--门面模式【Facade Pattern】
- 设计模式7 - 门面模式【Facade Pattern】
- Java设计模式-门面模式 Facade Pattern
- 24种设计模式--门面模式【Facade Pattern】
- 设计模式12:Facade Pattern (门面模式)
- 设计模式(七)门面模式(Facade Pattern 外观模式)
- 《设计模式--基于C#的工程化实现及扩展》 Security Design Pattern 系列 3 检查点模式(Check Point)
- 《设计模式--基于C#的工程化实现及扩展》补充 Security Design Pattern 系列 1 公钥体系与分布式环境要求
- 《设计模式--基于C#的工程化实现及扩展》补充 Security Design Pattern 系列 1 公钥体系与分布式环境要求