工廠模式 《設計模式》

2021-10-02 05:00:56 字數 2805 閱讀 7436

工廠模式,屬於建立型設計模式,需要生成的物件叫做產品 ,生成物件的地方叫做工廠。

型別:

簡單工廠模式(****** factory)工廠方法模式(factory method)抽象工廠模式(abstract factory)

使用場景:

當建立物件時,需要很多複雜的操作時。

例如:建立物件之前必須生成一些輔助的物件。這種在建立乙個物件,需要一系列操作的時候,就需要工廠模式了。

三種模式,由上至下逐步抽象

舉例子:使用者-手機。使用者不用自己造手機,通過工廠來獲取手機

手機類:

abstract

class

phone

//蘋果手機

class

iphone

extends

phone

}//vivo手機

class

vivo

extends

phone

}

工廠類:

class

factory

return null;

}}

使用者類:

class

user

}

特點:

缺點:

於是工廠方法模式出現了。工廠類定義成了介面,而每新增的手機型別,就增加該手機型別對應工廠類的實現,這樣工廠的設計就可以擴充套件了,而不必去修改原來的工廠**。

手機類:

abstract

class

phone

//蘋果手機

class

iphone

extends

phone

}//vivo手機

class

vivo

extends

phone

}

工廠類:

inte***ce

factoryphone

class

factoryiphone

implements

factoryphone

}class

factoryvivo

implements

factoryphone

}

使用者類:

class

user

}

特點:

缺點:

抽象工廠模式是工廠方法模式的公升級版本。

當使用者的要求越來越高,手機需要鋼化膜,還有手機殼。於是工廠要生產這些東西。

產品類:

//鋼化膜

abstract

class

galss

class

galssa

extends

galss

}class

galssb

extends

galss

}//手機殼

abstract

class

shell

class

shella

extends

shell

}class

shellb

extends

shell

}

工廠類:

inte***ce

abstactfactory

class

factoryiphone

implements

abstactfactory

//手機殼

public shella createshell()

}class

factoryvivo

implements

abstactfactory

//手機殼

public shellb createshell()

}

使用者類:

class

user

}

特點:

缺點:

無論是簡單工廠模式,工廠方法模式,還是抽象工廠模式,他們都屬於工廠模式,在形式和特點上也是極為相似的,他們的最終目的都是為了解耦。在使用時,我們不必去在意這個模式到底工廠方法模式還是抽象工廠模式,因為他們之間的演變常常是令人琢磨不透的。經常你會發現,明明使用的工廠方法模式,當新需求來臨,稍加修改,加入了乙個新方法後,由於類中的產品構成了不同等級結構中的產品族,它就變成抽象工廠模式了;而對於抽象工廠模式,當減少乙個方法使的提供的產品不再構成產品族之後,它就演變成了工廠方法模式。

所以,在使用工廠模式時,只需要關心降低耦合度的目的是否達到了。

設計模式 工廠模式 抽象工廠模式

建立物件時不會對客戶暴露建立邏輯,並且通過使用乙個共同的介面來指向建立的物件。sept1 建立乙個公共介面,將要對外開放的方法在這裡定義。sept2 建立實現介面的類,用即實現對外開放的類的方法 sept3 建立工廠,提供乙個get方法,這個方法提供返回實現類的物件 建立選擇 sept4 使用,建立...

設計模式 工廠設計模式

用於建立物件的介面,交給子類去實現 我們舉乙個生產nokia的例子 public abstract class nokiaphone先試定義了乙個抽象類,抽象出方法poweronphone 模擬手機開機的動作 public class nokia5200 extends nokiaphone pub...

設計模式 工廠設計模式

工廠模式分為工廠方法模式和抽象工廠模式 工廠方法模式分為 普通工廠模式,就是建立乙個工廠類,對實現了同一介面的一些類進行例項的建立。多個工廠方法模式,是對普通工廠方法模式的改進,在普通工廠方法模式中,如果傳遞的字串出錯,則不能正確建立物件,而多個工廠方法模式是提供多個工廠方法,分別建立物件。靜態工廠...