デザインパターン - ファクトリパターン(工場)(モデル)。

脱離およびC ++のソースコードを達成するための23個のデザインパターン-GoFファインパターンの設計ソリューション:以下のソースコード

//Product.h

#pragma一度
 クラスの製品{
 パブリック仮想〜製品()= 0 ;
保護
    製品(); 
プライベート
}; 
クラス ConcreateProduct:公共商品
{ 
パブリック
    ConcreateProduct(); 
    ConcreateProduct();
プライベート保護
};

//Product.cpp

#include " Product.h " 
の#include <入出力ストリーム> 

製品::製品()
{ 

} 

商品::製品()
{ 

} 

ConcreateProduct :: ConcreateProduct()
{ 
    のstd :: COUT << " ConcreateProduct " << のstd :: endl; 
} 
ConcreateProduct ::ConcreateProduct()
{ 

}

//Factory.h

#pragma一度
 クラスの製品。
クラスファクトリー{
 パブリック仮想〜工場()= 0 ;
    仮想製品* CreateProduct()= 0 ;
保護された
    工場(); 
プライベート
}; 

クラス ConcreateFactory:パブリックファクトリー{
 パブリック
    ConcreateFactory(); 
    ConcreateFactory(); 
    製品 * CreateProduct();
保護プライベート


};

//Factory.cpp

#include " Factory.h " 
の#include " Product.h " 
の#include <入出力ストリーム> 

工場::工場(){} 
工場::工場(){} 
ConcreateFactory :: ConcreateFactory()
{ 
    のstd :: COUT << " ConcreateFactory  << はstd ::てendl; 
} 
ConcreateFactory ::ConcreateFactory(){} 
製品 * ConcreateFactory :: CreateProduct()
{ 
    返す 新しい)(ConcreateProductを。
}

//main.cpp

#include " Factory.h " 
の#include " Product.h " 
の#include <入出力ストリーム> int型のmain(int型の引数、CHAR * ARGV [])
{ 
    Factoryの * FAC = 新しい新しい ConcreateFactory(); // 特定リターダのクラスサブクラス。
    プロ= FAC *製品> CreateProduct(); // クラスオブジェクトパッケージ。
    PRO1 = FAC *製品> CreateProduct();
     戻り0 ; 
}

 

おすすめ

転載: www.cnblogs.com/fourmi/p/12074937.html