工廠模式方便建立同種產品型別的複雜引數物件。
簡單工廠模式又叫靜態工廠模式,由乙個工廠類根據傳入的引數,動態決定應該建立哪乙個產品類(這些產品類繼承自乙個父類或介面)的例項。
優點:例項的建立與使用分離,有利於軟體結構的優化。使用者直接獲取例項,無需關心如何建立這些例項。
缺點:違反了開閉原則。
工廠角色:它負責建立所有產品的例項。它實現建立所有產品的邏輯,並提供乙個方法供外界呼叫,根據傳入引數建立所需產品的例項。
抽象產品角色:它描述了所有產品的公共介面,所有產品都要實現或繼承它。
具體產品角色:它實現或繼承了抽象產品角色,並由工廠類建立其具體例項。
抽象產品角色: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 ...