設計模式 工廠模式

2021-08-17 17:49:10 字數 2711 閱讀 2226

一、介紹

工廠模式屬於建立型模式,它是為建立物件提供介面的,提供了一種建立物件的最佳方式,在建立物件時不會對客戶端暴露建立邏輯,並且通過使用乙個共同的介面來指向新建立的物件。

二、工廠模式的分類

1:簡單工廠模式

簡單工廠模式又叫靜態工廠方法模式,通過專門定義乙個類來負責建立其他類的例項。

在該模式中有三個角色:

工廠角色:該角色是簡單工廠模式的核心,它負責建立的邏輯,可以直接被外部呼叫。

抽象角色:所要建立物件的父類,是例項的共有介面。

具體產品角色:所建立的例項

我們以牛奶舉例,**如下:

/**

* 抽象角色

*/public inte***ce milk

/**

* 具體產品角色

*/public class mengniu implements milk

/**

* 具體產品角色

*/public class telunsu implements milk

/**

* 具體產品角色

*/public class telunsu implements milk

/**

* 工廠角色

*/public class ******factory else if("伊利".equals(name))else if("特崙蘇".equals(name))else

}}

/**

* 測試

*/public class milktest

}

這就是簡單工廠模式了,當以後有新的的牛奶需要生產時直接新增新類,修改工廠角色的邏輯即可,但是這樣做並不好,因為工廠角色違反了開閉原則(擴充套件開放,修改關閉),每新增乙個新產品,工廠角色都需要修改邏輯,所以就有了工廠方法模式。

2:工廠方法模式

工廠方法模式又被稱為多型工廠模式,通過定義乙個建立產品物件的介面,將實際的建立工作在它的子類中完成,核心工廠不在負責產檢產品,這樣當新增新產品時不必修改核心工廠,只需要新增子工廠即可完成。

在該模式中它有四個角色:

抽象工廠角色:該角色是工廠方法模式的核心,所有的工廠類都必須實現該工廠。

具體工廠角色:該角色是抽象工廠的實現類,負責例項化產品物件。

抽象角色:所要建立物件的父類,是例項的共有介面。

具體產品角色:所建立的例項。

同樣以牛奶舉例,**如下(抽象角色和具體產品角色是一樣的所以就不再貼出**):

/**

* 抽象工廠

*/public inte***ce milkfactory

/**

* 具體工廠角色

*/public class mengniufactory implements milkfactory

}

/**

* 具體工廠角色

*/public class mengniufactory implements milkfactory

}

/**

* 具體工廠角色

*/public class mengniufactory implements milkfactory

}

/**

* 測試

*/@test

public void factorymethodtest()

這就是工廠方法模式了,需要什麼產品就呼叫哪個產品的工廠,當新增新產品時只需要新增該產品和該產品的工廠類即可。

3:抽象工廠模式

抽象工廠模式通過像客戶端提供乙個介面,使得客戶端不必在指定產品的具體型別,就可以建立多個產品。

它和工廠方法模式一樣,擁有相同的四個角色。

同樣以牛奶舉例(抽象產品角色,具體產品角色的**一樣就不再貼出**):

/**

* 抽象工廠

*/public inte***ce abstractfactory

/**

* 具體工廠

*/public class abstractfactoryimpl implements abstractfactory

@override

public milk getyili()

@override

public milk gettelunsu()

}

/**

* 測試

*/@test

public void abstractfactorytest()

這就是抽象工廠模式了,使用者不需要指定型別,就可以建立多個產品。

三、總結

無論是簡單工廠模式、工廠方法模式還是抽象工廠模式它們都是工廠模式,他們最終的目的都是為了解耦,所以在使用時不必在意屬於哪一類,只需要在意的是解耦的目的達到即可。

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

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

設計模式 工廠設計模式

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

設計模式 工廠設計模式

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