template method 隔离不变与变化,把不变的部分上移到父类中,由子类去实现变化的部分
#include <vector>
#include <iostream>
using namespace std;
class A {
public:
virtual ~A() {}
// template method
void common() {
read(); // 唯一方法
print(); // 多态方法
}
void read() {
cout << " A read " << endl;
}
virtual void print() {
cout << " A print " << endl;
}
};
class B : public A {
public:
void print() {
A::print();
cout << " B print " << endl;
}
};
class C : public A {
public:
void print() {
A::print();
cout << " C print " << endl;
}
};
int main() {
B b;
b.common();
C c;
c.common();
}