標籤:
1,簡單原廠模式
a) 有一個抽象的介面用來表示工廠需要生產的產品共性;然後各個具體的產品類實現該抽象介面。
b) 工廠只需要持有產品的抽象介面,工廠接收一個 TYPE 參數來決定生產何種產品。
c) 對於客戶而言,當他需要某種類型的產品時,只需要獲得工廠對象,然後將產品的 TYPE參數傳遞給工廠,由工廠建立他所需要的產品。
2,策略模式
策略,本質上是一種演算法。當客戶需要處理某件事情時,由於所處的環境不同,他可以採取不同的方式(策略)去處理。因此,客戶關注的是如何方便得擷取所需的策略。
a) 有一個抽象的介面用來表示策略的架構,它定義了基本的處理演算法。然後各個具體的策略實現該介面來擴充、實現相應的具體策略。
b) 有一個Context類來表示環境,Context擁有抽象的策略介面,它根據 TYPE參數來決定使用哪個策略。
c) 對於客戶而言,當他需要使用某種策略時,肯定所處在某個Context上下文環境中,他傳遞一個TYPE參數給Context,由Context來負責使用何種策略。
3,簡單原廠模式與策略模式的比較
①策略模式與簡單原廠模式的結構圖基本一致,因此,二者的使用模式基本一致。
②簡單原廠模式的目的是建立對象,並使用所建立的對象去做事情(需要持有對象的引用);策略模式的目的是使用原則,即客戶只關注我需要某種策略,你提供一個給我,我拿著該策略完成任務就行了(不需要持有策略的引用)。
③策略模式是定義一系列演算法的方法,這些演算法以不同的方式完成相同的工作,即演算法的實現不同。策略模式讓客戶以統一的方式來調用不同的演算法,將演算法的使用者與演算法解耦。
④簡單原廠模式定義如何獲得產品的方法,不同的產品具有不同的功能,簡單原廠模式解決了客戶如何有效地擷取他所關心的產品。對客戶而言,只需要持有一個工廠對象,給工廠一個產品的型別參數,讓工廠負責生產相應的產品即可。然後,客戶就拿著這個產品,進行方法調用,獲得相關的產品的功能。
策略模式與簡單原廠模式