定義:提供一個創建一系列相關或相互依賴對象的接口,而無需指定它們具體的類。
舉例:
學校裏需要製造一年級的語文書、數學書,二年級的語文書、數學書。
類圖
客戶端
#include "FactoryGrade1.h"
#include "FactoryGrade2.h"
int main(int argc, char* argv[])
{
//Factory *factory = new FactoryGrade1(); // 製造一年級的書
Factory *factory = new FactoryGrade2(); // 製造二年級的書
Book *chinese = factory->CreateChineseBook();
Book *math = factory->CreateMathBook();
chinese->show();
math->show();
getchar(); // 暫停,查看輸出結果
return 0;
}
日後如果客戶端需要修改爲使用其他年級的書籍,只需擴展一個對應年級工廠類,及相應的書籍類,將客戶端中的工廠更新爲三年級工廠即可,其他無需改動。做到了對擴展開放,對修改封閉。