class CCook
{
public:
CCook() {}
virtual ~CCook() {}
//建造过程函数
//为了保证所有的子类能够按照指定顺序依次实现完整的建造过程,而不会忘记某一个过程的调用(如忘了放盐)
void Cook()
{
PutFat(); //先放油
PutFood(); //再放食物
PutSalt(); //接着放盐
PutAginomoto(); //最后放味精
}
protected:
virtual void PutFat() = 0;
virtual void PutFood() = 0;
virtual void PutSalt() = 0;
virtual void PutAginomoto() = 0;
};2、炒肉类,继承并实现CCook的每一道工序class CCookMeat : public CCook
{
public:
private:
void PutFat()
{
printf("Please input 10 gram fat to the pen\n");
}
void PutFood()
{
printf("Please input 500 gram meat to the pen\n");
}
void PutSalt()
{
printf("Please input 2 gram salt to the pen\n");
}
void PutAginomoto()
{
printf("Please iput 1 gram aginomoto to the pen\n");
}
};3、实现示例void Test()
{
CCookMeat oCCookMeat;
oCCookMeat.Cook();
}运行结果如下:原文:http://blog.csdn.net/gufeng99/article/details/46670629