?介紹
簡單工廠模式根據(jù)所提供的參數(shù)數(shù)據(jù)返回幾個可能類中的一個類的實(shí)例。通常返回的類都有一個公共的父類和公共的方法。
?文章來源:http://www.zghlxwxcb.cn/news/detail-636148.html
意圖
提供一個類,負(fù)責(zé)根據(jù)一定的條件創(chuàng)建某一具體類的實(shí)例。同時使用工廠模式也是為了隱藏創(chuàng)建對象的過程
角色及其職責(zé)
(1)工廠(Creator)角色:是簡單工廠模式的核心,負(fù)責(zé)實(shí)現(xiàn)創(chuàng)建所有實(shí)例的內(nèi)部邏輯。工廠類可以被外界直接調(diào)用,創(chuàng)建所需的產(chǎn)品對象。
(2) 抽象(Produet)角色:是簡單工廠模式所創(chuàng)建的所有對象的父類,負(fù)責(zé)描述所有實(shí)例所共有的公共接口。
(3) 具體產(chǎn)品(Concrete Product)角色:是簡單工廠模式的創(chuàng)建目標(biāo),所有創(chuàng)建的對象
都是充當(dāng)這個角色的某個具體類的實(shí)例。一般來講,它是抽象產(chǎn)品類的子類,實(shí)現(xiàn)了抽象產(chǎn)
品類中定義的所有接口方法。
?
?在工廠角色中可以通過參數(shù)來判斷創(chuàng)建哪種具體的產(chǎn)品子類對象,這個參數(shù)可以通過配置文件獲取,也可以作為方法參數(shù)傳入。
例子
下面我來實(shí)現(xiàn)一下
一個產(chǎn)品接口,兩個產(chǎn)品類Chair,Desk,一個工廠類,通過參數(shù)來決定創(chuàng)建哪個具體產(chǎn)品
產(chǎn)品接口
public interface MyProduct {
//返回產(chǎn)品的具體名稱
String getProductName();
}
具體產(chǎn)品
public class Chair implements MyProduct{
@Override
public String getProductName() {
return "椅子";
}
}
public class Desk implements MyProduct{
@Override
public String getProductName() {
return "桌子";
}
}
工廠類
/**
* @Classname MyProductFactory
* @author: 我心
* @Description: 產(chǎn)品工廠類
* @Date 2022/11/26 21:51
* @Created by Lenovo
*/
public class MyProductFactory {
public MyProduct getProduct(String code){
MyProduct product=null;//要返回的產(chǎn)品對象
//如果參數(shù)是c,則創(chuàng)建Chair對象
if (code.equals("c")){
product=new Chair();
}
//如果參數(shù)是d,則創(chuàng)建Desk對象
else if( code.equals("d")){
product=new Desk();
}
return product;
}
}
運(yùn)行代碼
public class Main {
public static void main(String[] args) {
//這時候我們就不需要關(guān)注具體創(chuàng)建的是什么對象,只需要知道它是所需的產(chǎn)品即可,隱藏了創(chuàng)建對象的細(xì)節(jié)
MyProductFactory productFactory=new MyProductFactory();
//然后我們直接調(diào)用產(chǎn)品的公共接口方法使用即可,不管是什么產(chǎn)品,都實(shí)現(xiàn)了這一個接口,我們也不需要關(guān)注接口的細(xì)節(jié)
MyProduct c = productFactory.getProduct("c");
System.out.println(c.getProductName());
}
}
運(yùn)行結(jié)果
?
文章來源地址http://www.zghlxwxcb.cn/news/detail-636148.html
到了這里,關(guān)于設(shè)計(jì)模式-簡單工廠模式(靜態(tài)工廠模式)java實(shí)現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!