抽象工廠模式和策略模式有啥區別?類圖是一樣的,對於抽象工廠模

時間 2021-08-30 10:12:15

1樓:

策略模式與工廠模式從uml圖上來說,基本一致。只是強調的封裝不同。我們以工廠模式和策略模式的比較來講解策略模式。

工廠模式我們可以做如下理解:假設有audi的公司生產汽車,它掌握一項核心的技術就是生產汽車,另一方面,它生產的汽車是有不同型號的,並且在不同的生產線上進行組裝。當客戶通過銷售部門進行預定後,audi公司將在指定的生產線上為客戶生產出它所需要的汽車。

策略(strategy)模式在結構上與工廠模式類似,唯一的區別是工廠模式例項化一個產品的操作是在服務端來做的,換句話說客戶端傳達給服務端的只是某種標識,服務端根據該標識例項化一個物件。而策略模式的客戶端傳達給服務端的是一個例項,服務端只是將該例項拿過去在服務端的環境裡執行該例項的方法。這就好比一個對汽車不甚瞭解的人去買車,他在那一比劃,說要什麼什麼樣的,銷售部門根據他的這個「比劃」來形成一份訂單,這就是工廠模式下的工作方式。

而策略模式下那個顧客就是個行家,他自己給出了訂單的詳細資訊,銷售部門只是轉了一下手就交給生產部門去做了。通過兩相對比,我們不難發現,採用工廠模式必須提供足夠靈活的銷售部門,如果使用者有了新的需求,銷售部門必須馬上意識到這樣才可以做出合適的訂單。所以倘一款新車出來了,生產部門和銷售部門都需要更新,對顧客來說也需要更新對新車的描述所以需要改動的地方有三處。

而策略模式中的銷售部門工作比較固定,它只負責接受訂單並執行特定的幾個操作。當一款新車出來時,只需要對服務端的生產部門和客戶端的**進行更新,而不需要更新銷售部門的**。

技術支援: 簡單工廠和策略的基礎都是因為物件導向的封裝與多型。他們實現的思想都是先設定一個抽象的模型並從該模型派生出符合不同客戶需求的各種方法,並加以封裝。

工廠模式和策略模式的區別在於例項化一個物件的位置不同,對工廠模式而言,例項化物件是放在服務端的,即放在了工廠類裡面;

而策略模式例項化物件的操作在客戶端,服務端的「銷售部門」只負責傳遞該物件,並在服務端的環境裡執行特定的操作。。。

工廠模式要求服務端的銷售部門足夠靈敏,而策略模式由於對策略進行了封裝,所以他的銷售部門比較傻,需要客戶提供足夠能區分使用哪種策略的引數,而這最好的就是該策略的例項了。

2樓:匿名使用者

工廠模式用於建立類,策略模式用於以後擴充套件更多行為,出發點不一樣。

3樓:匿名使用者

sqlconnection con = new sqlconnection

con.open();

string sqlstr = "sql語句";

sqldataadapter da = new sqldataadapter(sqlstr, con);

dataset ds= new dataset();

da.fill(ds);

datagridview1.datasource = ds.tables[0];

con.close();

工廠模式和抽象工廠模式的本質區別是什麼?

4樓:手機使用者

可以這麼去理解,「抽象工廠模式」這個稱呼中的「抽象」是一個動詞,即版對工廠方法模權式進行了抽象,就變成了抽象工廠模式,這麼理解後,就不難看出它們的區別:

工廠方法模式:每個抽象產品派生多個具體產品類,每個抽象工廠類派生多個具體工廠類,每個具體工廠類負責一個具體產品的例項建立;

抽象工廠模式:每個抽象產品派生多個具體產品類,每個抽象工廠派生多個具體工廠類,每個具體工廠負責多個(一系列)具體產品的例項建立。

你在下面所說的一句話「抽象工廠的具體工廠經常實現工廠方法來建立他的產品」,這句話裡面的「工廠方法」僅僅是對一類方法的稱呼,此處的「工廠方法」與「工廠方法模式」無關,即便在簡單工廠模式中,也會有工廠方法這一說。

簡單工廠模式,工廠方法模式和抽象工廠模式的異同

5樓:文件類共創空間

工廠方法模式:

一個抽象產品類,可以派生出多個具體產品類。

一個抽象工廠類,可以派生出多個具體工廠類。

每個具體工廠類只能建立一個具體產品類的例項。

抽象工廠模式:

多個抽象產品類,每個抽象產品類可以派生出多個具體產品類。

一個抽象工廠類,可以派生出多個具體工廠類。

每個具體工廠類可以建立多個具體產品類的例項。

區別:工廠方法模式只有一個抽象產品類,而抽象工廠模式有多個。

工廠方法模式的具體工廠類只能建立一個具體產品類的例項,而抽象工廠模式可以建立多個。

工廠方法模式與抽象工廠模式的區別

6樓:

工廠方法模式:

一個抽象產品類,可以派生出多個具體產品類。

一個抽象工廠類,可以派生出多個具體工廠類。

每個具體工廠類只能建立一個具體產品類的例項。

抽象工廠模式:

多個抽象產品類,每個抽象產品類可以派生出多個具體產品類。

一個抽象工廠類,可以派生出多個具體工廠類。

每個具體工廠類可以建立多個具體產品類的例項。

區別:工廠方法模式只有一個抽象產品類,而抽象工廠模式有多個。

工廠方法模式的具體工廠類只能建立一個具體產品類的例項,而抽象工廠模式可以建立多個。

工廠模式,抽象工廠模式三者有什麼區別

7樓:匿名使用者

工廠方法模式、抽象工廠模式最大的區別在於:

工廠方法模式:針對的是 一個產品等級結構。

抽象工廠模式:針對 多個產品等級結構。

工廠模式,簡單工廠模式,抽象工廠模式 三者有什麼區別

工廠模式,簡單工廠模式,抽象工廠模式三者有什麼區別

8樓:灬nico丶

工廠模式,簡單工廠模式,抽象工廠模式三者區別如下:

1、首先,三者的建立物件是不相同的。

進行建立物件時,「工廠模式」不使用new建立物件,而是使用factory模式;「簡單工廠模式」則是通過fw模式來建立物件;「抽象工廠模式」使用迭代模式來建立物件。

2、其次,三者的定義變數不同。

「工廠模式」在使用時可以隨時設定變數,不用提前進行設定。「簡單工廠模式」中需要使用引數或者配置檔案等已經定義好的變數,然後才能進行下一步的操作。「抽象工廠模式則」則需要每次增加產品時,進行修改類方法。

3、最後,三者的介面數量不同。「工廠模式」可以使用兩個介面以及三個介面,「簡單工廠模式」只可以使用一個介面。「抽象工廠模式」則可以使用無限個介面。

9樓:紙墨成殤

1、建立物件不同。建立物件時,「工廠模式」使用factory模式替代使用new建立物件;「簡單工廠模式」使用fw模式建立物件;「抽象工廠模式」則使用迭代模式建立物件。

2、定義變數不同。「工廠模式」不用事先定義變數,使用時隨時引用便可。「簡單工廠模式」,使用引數或者配置檔案等事先定義好的變數,然後利用分支判斷初始化具體產品類並返回。

「抽象工廠模式則」不符合「開發-封閉」原則,每次增加產品,都需要修改類方法。

3、介面數量不同。「工廠模式」有兩至三個介面。「簡單工廠模式」只有一個介面。抽象工廠模式理論上具有無限個介面。

擴充套件資料

程式設計使用「工廠模式」的優缺點:

1、優點:

方便擴充套件演算法,比如增加一個開根號的功能,我們只要繼續繼承運算類就行了,同時客戶端也就是使用者不知道具體的實現細節,只要給出相關標示符,工廠函式就馬上給他建立一個他想要的實體就行了。減少了使用者和功能開發者之間的耦合度。

2、缺點:

在進行擴充套件的時候,我們要更改工廠函式裡面的那個分支語句switch,這樣便破壞了ocp,而且當有多級結構繼承的時候,簡單工廠就會因為只能對應平行一層記得繼承,不得不使得好多類繼承同一個介面,然後得到a*b這麼多的工廠實體可能,工廠函式很難維護。

抽象工廠和工廠模式的區別,抽象工廠和工廠模式的區別 c

哎呦您這寫bug呢 首先來看看這兩者的定義區別 工廠模式 定義一個用於建立物件的藉口,讓子類決定例項化哪一個類 抽象工廠模式 為建立一組相關或相互依賴的物件提供一個介面,而且無需指定他們的具體類 個人覺得這個區別在於產品,如果產品單一,最合適用工廠模式,但是如果有多個業務品種 業務分類時,通過抽象工...

IDE模式和AHCI模式有什麼區別

通俗易懂的說法就是,ide就是ata模式,是並口傳輸模式,04年前普及的技術,理論最大133mb每秒,ahci就是sata模式,串列埠傳輸模式,新技術,傳輸速度快,理論最大300mb每秒,簡單點說就是這樣。調成ide模式是為了安裝沒有繼承sata驅動的系統,裝完系統一樣要裝好sata驅動然後把工作模...

wifi路由模式和ap模式有什麼區別

1 功能不同 wifi無線路由器通過wifi無線路由器把有線網路訊號轉換成無線訊號,供支援其技術的電腦 手機 pda等接收。無線ap為無線網和有線網之間溝通的橋樑,組建無線區域網 wlan 的核心裝置。它主要提供無線工作站和有線區域網之間的互相訪問,這樣,在ap訊號覆蓋範圍內的無線工作站可以通過它進...