工廠相關設計模式學習記錄

2021-10-04 13:23:37 字數 2014 閱讀 2190

屬於建立型設計模式,建立型模式設計物件的例項化,這類模式的特點是,不讓使用者依賴於物件的建立或排列方式,避免使用者直接使用new運算子建立物件。

使用乙個工廠類,通過傳入的不同引數返回不同的例項物件,通常是某一型別的不同子類。建立的實體類擁有共同的介面或父類。

需要建立的物件較少,且很少會進行修改。

客戶端不關心物件建立過程

可以對建立的物件進行加工,對客戶端隱藏細節

建立邏輯複雜或建立物件過多而造成**臃腫

新增刪除子類需要修改工廠類,違反了開閉原則

public

class

mousefactory

}public

static

void

main

(string[

] args)

}public

inte***ce

mouse

public

class

dellmouse

implements

mouse

}public

class

hpmouse

implements

mouse

}

為了符合開閉原則,不修改現有的工廠類,所以對工廠類也做了分類,不同型別的例項使用不同的例項工廠,所有例項工廠擁有共同的工廠父類或介面。

對客戶端隱藏物件建立細節

建立乙個新的型別時,需要建立對應的例項型別和工廠型別,雙倍的**編寫

只能建立同一種型別的物件,無法滿足多種型別的建立。

public

inte***ce

mousefactory

public

class

dellmousefactory

implements

mousefactory

}public

class

hpmousefactory

implements

mousefactory

}public

class

methodfactorydemo

}

工廠方法雖然可以做到開閉原則,但是無法建立不同的物件型別,抽象工廠模式則可以解決這乙個問題,可以認為抽象工廠抽象的是產品的型別,支援不同產品的建立。

個人理解抽象工廠並不是對工廠方法的擴充套件,而是從物件的型別角度進行了區分,抽象工廠支援不同物件型別的建立,而工廠方法僅是針對同一種物件型別做建立。

可以建立不同型別的物件,新增乙個工廠是不會違反開閉原則的。

新增乙個產品型別,仍然需要修改各個工廠類,違反開閉原則

public

inte***ce

compute***ctory

public

class

dellcompute***ctory

implements

compute***ctory

@override

public keyboard createkeyboard()

}public

class

hpcompute***ctory

implements

compute***ctory

@override

public keyboard createkeyboard()

}public

class

abstractfactorydemo

}public

inte***ce

keyboard

public

class

hpkeyboard

implements

keyboard

}public

class

dellkeyboard

implements

keyboard

}

設計模式 工廠類相關模式

工廠模式的定義如下 定義乙個用於建立物件的介面,讓子類決定例項化哪個類。工廠方法使乙個類的例項化延遲到其子類。其通用類圖如下。其產品類定義產品的公共屬性和介面,工廠類定義產品例項化的 方式 工廠模式 抽象工廠模式的優點 1 工廠模式巨有非常好的封裝性,結構清晰 在抽象工廠模式中,其結構還可以隨著需要...

設計模式學習 工廠模式

工廠模式是較常見的一種設計模式 一 基本特點 工廠模式可分為簡單工廠模式,工廠模式和抽象工廠模式,它們的思路和實現都很相似.基本特點為至少包括以下三個類 工廠類 用new操作符建立各種產品類 抽象產品類 各產品類的基類,定義了產品的介面,具體產品類 抽象產品類的子類,包含了具體實現 使用者在使用時通...

設計模式學習(工廠模式)

這裡說的工廠模式是簡單工廠模式和抽象工廠模式,兩者有一定的區別,也有共同之處。上述過程是開閉原則的乙個典型體現。在下圖的例子中,factory類依賴具體物件的抽象來建立具體的物件 dell,sony 這乙個過程帶來的好處就是實現了factory類與具體產品之間的解耦合。客戶端可以自由的通過facto...