1、テンプレート方法モード
2272 ワード
1、テンプレートメソッドモードとは何ですか.操作アルゴリズムのスケルトン(操作ステップ関数に相当)を定義し(安定)、いくつかのステップ(変化)をサブクラスに遅延します(仮想関数を定義し、サブクラスを書き換える).テンプレートメソッドにより、サブクラスは、アルゴリズムの構造を変更することなく、アルゴリズムの特定のステップを再定義(書き換える)ことができる.2、動機?第一に、ソフトウェア構築の過程で、あるタスクに対して、それは常に(安定した)全体的な操作構造を持っている.しかし、各サブステップには多くの変更が必要です.あるいは,固有の理由(例えばフレームワークとアプリケーションの関係)により,タスクの全体構造と同時に実現できない.第二に、安定した動作の構造の下で、各サブステップの変化または後期の実現ニーズに柔軟に対応する方法.「私を呼び出さないで、私にあなたを呼び出させてください」
#include
using namespace std;
class Libary{ // 。
public:
void step01()
{
cout << " 1" << endl;
}
void step03()
{
cout << " 1" << endl;
}
void step05()
{
cout << " 1" << endl;
}
};
class application{
public:
bool setp02(){
return true;
}
void setp04(){
cout << " 4" << endl;
}
};
void main3(){
Libary lib;
application app;
lib.step01();
if (app.setp02()){
lib.step03();
}
for (int i = 0; i < 3; i++){
app.setp04();
}
lib.step05();
system("pause");
}
#include
using namespace std;
/*
1、 ?
( )( ), ( ) ( , )。
, ( ) 。
2、 ?
、 , ( ) 。 。
, ( ), 。
、 , 。
" , "
*/
class Libary{ // 。
public:
void run() // 。
{
step01();
if (step02()){ // ----
step03();
}
for (int i = 0; i < 3; i++){
step04();// ----
}
step05();
}
virtual ~Libary(){} //
protected:
void step01() //
{
cout << " 1"<< endl;
}
void step05() //
{
cout << " 5" << endl;
}
void step03() //
{
cout << " 3" << endl;
}
virtual bool step02() = 0; //
virtual void step04() = 0; //
};
class application :public Libary{
bool step02()
{
return true;
}
void step04()
{
cout << " 4" << endl;
}
};
int main(){
Libary *lib=new application();
lib->run();
system("pause");
}