脱離および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 ; }