模板方法模式
来源:互联网 发布:阿里云vps如何购买 编辑:程序博客网 时间:2024/05/16 11:09
- /************************************************************************/
- /* 模板方法模式 */
- /************************************************************************/
- /*
- 将重复的行为在父类中抽象,具体实现在子类种完成,而行为的调用代码在父类中完成
- 利用多态原理,实际的调用的是子类的行为
- */
- /*这里以A、B两人答同一份试卷为例*/
- #include<iostream>
- using namespace std;
- class TestPaper
- {
- public:
- /*A和B都具有答题的行为,但是具体的行为的表现却不一样*/
- virtual void Answer1() = 0;
- virtual void Answer2() = 0;
- void Question1()
- {
- cout<<"凤姐是不是女人? A.是 B.不是"<<endl;
- Answer1();
- }
- void Question2()
- {
- cout<<"如果世界上只剩下凤姐和你,你会取她吗? A.我宁愿自杀 B.为了人类哥从了"<<endl;
- Answer2();
- }
- };
- //A的答题试卷
- class TestPaperA :public TestPaper
- {
- public:
- void Answer1()
- {
- cout<<"A"<<endl;
- }
- void Answer2()
- {
- cout<<"A"<<endl;
- }
- };
- //B的答题试卷
- class TestPaperB : public TestPaper
- {
- public:
- void Answer1()
- {
- cout<<"B"<<endl;
- }
- void Answer2()
- {
- cout<<"B"<<endl;
- }
- };
- void main()
- {
- cout<<"A的试卷"<<endl;
- TestPaper * A = new TestPaperA();
- A->Question1();
- A->Question2();
- cout<<"................................................................................"<<endl;
- cout<<"B的试卷"<<endl;
- TestPaperB *B = new TestPaperB();
- B->Question1();
- B->Question2();
- }
/************************************************************************//* 模板方法模式 *//************************************************************************//*将重复的行为在父类中抽象,具体实现在子类种完成,而行为的调用代码在父类中完成利用多态原理,实际的调用的是子类的行为*//*这里以A、B两人答同一份试卷为例*/#include<iostream>using namespace std;class TestPaper{public:/*A和B都具有答题的行为,但是具体的行为的表现却不一样*/virtual void Answer1() = 0;virtual void Answer2() = 0;void Question1(){cout<<"凤姐是不是女人? A.是 B.不是"<<endl;Answer1();}void Question2(){cout<<"如果世界上只剩下凤姐和你,你会取她吗? A.我宁愿自杀 B.为了人类哥从了"<<endl;Answer2();}};//A的答题试卷class TestPaperA : public TestPaper{public:void Answer1(){cout<<"A"<<endl;}void Answer2(){cout<<"A"<<endl;}};//B的答题试卷class TestPaperB : public TestPaper{public:void Answer1(){cout<<"B"<<endl;}void Answer2(){cout<<"B"<<endl;}};void main(){cout<<"A的试卷"<<endl;TestPaper * A = new TestPaperA();A->Question1();A->Question2();cout<<"................................................................................"<<endl;cout<<"B的试卷"<<endl;TestPaperB *B = new TestPaperB();B->Question1();B->Question2();}
- 深入浅出模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法设计模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- TemplateMethod模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- c++设计模式之单例模式
- c++设计模式之组合模式
- c++设计模式之适配器模式
- 写给常熬夜的程序员朋友
- c++设计模式之状态模式
- 模板方法模式
- c++设计模式之抽象工厂模式
- c++设计模式之装饰者模式
- c++设计模式之原型模式Prototype
- symbolicatecrash 在什么位置
- 1到n中减少了一个数,顺序被打乱,找出缺失的数
- linux内核定时器
- xcode4.4符号化脚本
- jQuery代码分析之二Selector Engine