模板方法模式

今天把模板方法模式实现了。
//不知道为啥工具栏没了,,
#include <iostream>
using namespace std;
class AbstractClass //模板方法模式 
{
public:
AbstractClass():m_ID(0),m_answer(0){}
virtual void OperationA() = 0;
virtual void  OperationB() = 0;
 
  void TempOperationMethod()
  {
  OperationA();
  OperationB();
cout << "我的学号是:" << m_ID << endl;
cout << "1+2本题的答案是:" << m_answer << endl;
 
   }
   protected:
   int m_ID;
   char m_answer;
};
class concreteClassA : public AbstractClass
{
public:
virtual void OperationA()
{
m_answer = 'A';
}
virtual  void OperationB()
{
m_ID = 12;
}
 
};


class concreteClassB : public AbstractClass
{
public:
virtual void OperationA()
{
m_answer = 'B';
}
virtual  void OperationB()
{
m_ID = 11;
}
 
};


下面是客户端的调用
concreteClassA *pAobj = new concreteClassA;       
concreteClassB *pBobj = new concreteClassB;
pAobj->TempOperationMethod();
pBobj->TempOperationMethod();


代码也比较简单, 总结  通过把不变的行为搬移到父类的TempOperationMethod()中,再根据子类的不同来定义虚函数,放在TempOperationMethod(),
根据多态来实现多样性。     除去子类中重复的代码来体现他的优势
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值