Java設計模式 工廠模式

2021-08-17 15:19:37 字數 2187 閱讀 6383

工廠模式方便建立同種產品型別的複雜引數物件。

簡單工廠模式又叫靜態工廠模式,由乙個工廠類根據傳入的引數,動態決定應該建立哪乙個產品類(這些產品類繼承自乙個父類或介面)的例項。

優點:例項的建立與使用分離,有利於軟體結構的優化。使用者直接獲取例項,無需關心如何建立這些例項。

缺點:違反了開閉原則。

工廠角色:它負責建立所有產品的例項。它實現建立所有產品的邏輯,並提供乙個方法供外界呼叫,根據傳入引數建立所需產品的例項。

抽象產品角色:它描述了所有產品的公共介面,所有產品都要實現或繼承它。

具體產品角色:它實現或繼承了抽象產品角色,並由工廠類建立其具體例項。

抽象產品角色:ipay

public

inte***ce ipay

具體產品角色:weixinpay、alipay、unionpay

public

class

weixinpay

implements

ipay

}

public

class

alipay

implements

ipay

}

public

class

unionpay

implements

ipay

}

工廠角色:payfactory

public

class

payfactory

return payer;}}

factorytest 用payfactory根據引數生產weixinpay、alipay、unionpay的例項。

public

class factorytest

}

工廠方法模式定義了乙個建立產品物件的工廠介面,將實際建立產品的工作推遲到工廠子類當中。核心工廠類是乙個抽象工廠角色,它不再負責產品的建立,僅負責具體工廠子類必須實現的介面。

優點:符合「開閉原則」,實現了可擴充套件。可以在不修改已實現的工廠角色的情況下引進新的產品。

缺點:每次新增乙個具體產品類,也要同時新增乙個具體工廠類,使類的數量成倍增加。

抽象工廠角色:它描述了具體工廠子類必須實現的介面。

具體工廠角色:它實現了抽象工廠角色,並提供乙個方法供外界呼叫,建立所需產品的例項。

抽象產品角色:它描述了所有產品的公共介面,所有產品都要實現或繼承它。

具體產品角色:它實現或繼承了抽象產品角色,並由工廠類建立其具體例項。

抽象產品角色:ipay。同簡單工廠模式。

具體產品角色:weixinpay、alipay、unionpay。同簡單工廠模式。

抽象工廠角色:ipayfactory

public

inte***ce ipayfactory

具體工廠角色:weixinpayfactory 、alipayfactory 、unionpayfactory

public

class

weixinpayfactory

implements

ipayfactory

}

public

class

alipayfactory

implements

ipayfactory

}

public

class

unionpayfactory

implements

ipayfactory

}

factorytest呼叫具體工廠角色生產具體產品例項。

public

class factorytest

}

java設計模式 工廠模式

工廠模式 存在的目的 定義乙個用於建立複雜類的物件的介面。使用工廠模式,降低了類與類之間的耦合關係。分為三種實現方式 類之間的繼承結構不同 簡單工廠模式 工廠方法模式 抽象工廠模式。主要涉及的三種類 呼叫工廠的類,工廠類,產品類。先看乙個不適用工廠模式的類組織 class bmw32 class b...

JAVA設計模式 工廠模式

一 簡單工廠。它的缺點很明顯,當需要再新增乙個whitehuman類時,需要在工廠類中修改,則 的耦合性很高。建立需要用工廠new的class public inte ce human public class blackhuman implements human public class yel...

java設計模式 工廠模式

靜態工廠模式 為了建立物件而產生 1 有工廠類,有乙個可以根據需求返回建立的物件的方法 2 工廠類中的產生物件的方法的返回值型別是 父類的型別,產生的物件都是子類物件 3 強調 工廠類中的方法的返回值和返回的物件中存在著向上轉型的關係 public class cloth public class ...