Java 工廠模式

2021-09-09 07:12:55 字數 4612 閱讀 3650

第一種:簡單工廠

建立乙個工廠,對實現了同乙個介面的類,進行例項的建立,同時又因為建立例項的方法是靜態的,所以簡單工廠又被稱為靜態工廠。

簡單工廠的角色:

抽象產品角色:具體產品要繼承的父類或者要實現的介面。 

具體產品角色:在工廠類所建立的物件就是此物件的例項。 

//抽象的產品角色

public inte***ce phone

//具體的產品的角色

public class huaweip20 implements phone

}

//具體的產品的角色

public class huaweinova4 implements phone

}

//具體的產品的角色

public class huaweimate20 implements phone

}

//簡單工廠它是乙個類

public class huaweiphonefactory

return null;}}

//現在在簡單工廠模式裡建立產品例項

huaweiphonefactory.createphone(huaweiphonefactory.type_p20).phonename();

huaweiphonefactory.createphone(huaweiphonefactory.type_nova4).phonename();

huaweiphonefactory.createphone(huaweiphonefactory.type_mate20).phonename();

結果:

第二種:工廠模式

因為上面的的簡單工廠的類的建立依賴於工廠,所以如果我們要擴充套件程式,必須對工廠類進行修改,這樣就違背了物件導向設計的開閉原則(就是對擴充套件開放,對修改關閉),那麼此時我們可以用到工廠模式,我們建立抽象乙個工廠介面,建立具體化抽象介面的工廠類,產品的例項由某個具體工廠類來建立。

工廠模式的角色:

抽象工廠角色:具體工廠類要繼承的父類或者介面

具體工廠角色:具體化抽象工廠的抽象方法,並且建立具體產品的例項

抽象產品角色:具體產品類要繼承的父類或者介面

具體產品角色:具體工廠要建立的物件就是此產品的例項

工廠模式的特點:

多個具體的工廠類繼承具體工廠類或者實現介面,代替簡單工廠裡「全能」的工廠類,相比較簡單工廠,工廠方法減輕了「全能」工廠類的壓力,並且結構能能加靈活,但是類數量是大大的增加。

//抽象的產品角色

public inte***ce phone

//具體的產品角色(huaweinova4 )

public class huaweinova4 implements phone

}

//具體的產品角色(huaweip20)

public class huaweip20 implements phone

}

//具體的產品角色(huaweimate20)

public class huaweimate20 implements phone

}

//抽象工廠角色 具體工廠要實現的介面

public inte***ce phonefactory

//具體的工廠角色(huaweinova4factory )

public class huaweinova4factory implements phonefactory

}

//具體的工廠角色(huaweip20factory )

public class huaweip20factory implements phonefactory

}

//具體的工廠角色(huaweimate20factory )

public class huaweimate20factory implements phonefactory

}

各個具體的工廠建立自己產品例項

//建立huaweinova4

new huaweinova4factory().createphone().phonename();

//建立huaweip20

new huaweip20factory().createphone().phonename();

//建立huaweimate20

new huaweimate20factory().createphone().phonename();

結果:

第三種:抽象工廠

先說下兩個概念:

1.產品等級結構:如乙個抽象類是華為手機,其子類有huaweip20,huaweinova4,huaweimate20等,則抽象華為手機與具體的華為手機型號之間構成了乙個產品等級結構。

2.產品族:產品族是指同一工廠生產的,位於不同產品等級結構中的一組產品。比如華為電子廠生產華為華為手機,華為平板,華為電腦,則可以看出華為手機位於手機產品等級結構中,華為平板位於平板產品等級結構中,華為電腦位於電腦產品等級結構中,最終,華為手機,華為平板,華為電腦構成乙個產品族的。

抽象工廠的角色:

1.抽象工廠:它宣告了一組用於建立一族產品的方法,每乙個方法對應一種產品。

2.具體工廠:具體化抽象工廠建立產品的方法,這一組方法建立的產品,形成乙個產品族,每個產品都位於某個產品等級結構中。

3.抽象產品:抽象化產品,它宣告了產品所具有的業務方法

4.具體產品:繼承或者實現抽象產品,具體化抽象產品所宣告的業務方法。

抽象工廠與工廠模式的區別:

工廠模式對應的是一種產品等級結構,抽象工廠對應的則是多個產品等級結構。 

//抽象的產品角色(攝像頭)

public inte***ce camera

//抽象的產品角色(處理器)

public inte***ce processor

//具體的產品角色(手機攝像頭)

public class phonecamera implements camera

}

//具體的產品角色(平板攝像頭)

public class padcamera implements camera

}

//具體的產品角色(手機處理器)

public class phoneprocessor implements processor

}

//具體的產品角色(平板處理器)

public class padprocessor implements processor

}

//抽象工廠角色

public inte***ce factory

//具體的產品工廠角色(手機工廠)

public class phonefactory implements factory

@override

public processor createprocessor()

}

//具體的產品工廠角色(平板工廠)

public class padfactory implements factory

@override

public processor createprocessor()

}

//手機工廠,建立手機攝像頭,手機處理器,構成手機產品

factory phonefactory=new phonefactory();

phonefactory.createcmaera().create();

phonefactory.createprocessor().create();

//平板工廠,建立平板攝像頭,平板處理器,構成平板產品

factory padfactory=new padfactory();

padfactory.createcmaera().create();

padfactory.createprocessor().create();

結果:

java工廠模式

定義乙個用於建立物件的介面,我們需要乙個物件例項的時候就可以通過呼叫介面的方法來獲取我們想要的物件例項。首先,最簡單的 簡單工廠介面,可以返回例項 public inte ce factory 工廠實現類,返回money例項 public class moneyfactoryimpl impleme...

Java工廠模式

工廠模式理解起來並不是很難 只要耐心看看 理解它的運作機理就好了。運用時就要看個人的靈活性了。工廠是用來生產東西,但是從程式的角度講就是 用乙個工廠類來生產出你所需要的物件,這個生產出的物件可以是任意形式的 包括人,動物,水果,植物等不一定是要 機械性的東西 這是它跟現實工廠的區別之一。產品是由工廠...

java工廠模式

1.定義介面類idaouser public inte ce idaouser 2.定義工廠類,此工廠類實現了兩個不同類的呼叫。public final class daouse ctory return null 3 介面的實現,實現了介面idaouser的方法 public class daou...