普通写法(结构化)
class Library{
public:
void step1(){
//..............................
}
void step3(){
//................
}
void step5(){
//....................
}
}
class Application{
public:
bool Step2(){
//,,,,,,,,,....
}
bool Step4(){
//......................
}
int main(){
Library lib;
Applicaion app;
lib.Step1();
if(app.Step2()){
lib.step3();
}
for(int i =0;i<4;i++)
{
app.step4();
}
lib.step5();
}
}
模板方法.
class Library{
public:
void Run(){
Step1();
if(Step2()){
Step3();
}
for(int i = 0;i<4;i++){
Step4();
}
Step5();
}
virtual ~Library(){}
protected: //这些函数单独作为一个函数是没有意义的,public出去别人也用不到.
void Step1(){
///..........
}
void Step3(){
//........
}
void Step5(){
//,...
}
virtual bool Step2() = 0;
virtual void step4() = 0;
}
class Applicatioon : public Library{
protected:
virtual bool Step2(){
//..重写实现
}
virtual void Step4(){
//重写实现
}
int main(){
Library* lib = new Application; //多态指针
lib->Run();
delete lib;
}
}