程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 設計模式學習筆記--工廠方法模式

設計模式學習筆記--工廠方法模式

編輯:C++入門知識

設計模式學習筆記--工廠方法模式


 

學習過簡單工廠模式,感覺很好用。在創建對象時,可以將復雜的初始化操作從客戶端分離出來,簡化客戶端代碼。大大的減少了代碼修改的難度。而且可以通過參數不同,創建不同的對象。

 

但是簡單工廠模式也有一些弊端,違背了開放--封閉原則。即如果我們增加了一個產品,對應的工廠也要進行修改,即switch---case中要新增加一些分支條件,不利於擴展。所以就有了下面的工廠方法模式:

 

工廠方法模式:定義了一個用於創建對象的接口,子類決定實例化哪一個類,工廠方法模式使一個類的實例化延遲到子類。

 

 

// 設計模式Demo.cpp : 定義控制台應用程序的入口點。
//

#include "stdafx.h"
#include 
#include 
using namespace std;

//被創建的對象基類動物類
class Animal
{
public:
	virtual void func() = 0;
};

//子類 鳥
class Bird : public Animal
{
public:
	void func()override
	{
		cout<<"I am a bird. I can fly!"<Create()->func();

	//創建一個鳥類工廠
	god = new BirdFactory();
	//生成鳥類對象,並執行操作
	god->Create()->func();

	getchar();

	return 0;
}

 

結果:

I am a human. I can walk!
I am a bird. I can fly!

 

使用工廠方法模式時,我們定義工廠方法時,只要定義一個接口或者抽象類,子類繼承該接口或者抽象類,具體實現都由子類實現。而且不像簡單工廠模式那樣,需要在工廠中增加判斷條件,在這裡,添加子類的生產方法,只需要從接口或者抽象類再派生一個相關的子工廠類。遵循開放--封閉式原則。


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved