在spring中使用工廠模式

2021-10-10 09:26:20 字數 2559 閱讀 2915

bean的建立預設就是框架利用反射new出來的bean例項

工廠模式:工廠幫我們建立bean;有乙個專門幫我們建立物件的類,這個類就是工廠

假設有乙個飛機類airplane,那麼工廠模式中飛機的建立方法就是

airplane ap = airplanefactory.getairplane(string jzname);

靜態工廠:工廠本身不用建立物件;通過靜態方法呼叫 物件 = 工廠類.工廠方法名();

例項工廠:工廠本身需要建立物件:工廠類 工廠物件 = new 工廠類();

工廠物件.getairplane(string jzname);

1.建立靜態工廠

首先實現靜態工廠類airplanestaticfactory,在這裡面實現getairplane方法(方法中**亂寫的hhh)

public

class

airplanestaticfactory

}

那麼在bean中配置工廠就是:

"airplane01"

class

="com.lzt.factory.airplanestaticfactory"

factory-method

="getairplane"

>

value

="lisi"

/>

bean

>

在**中獲取airplane物件就是,直接獲取工廠id即可

airplane airplane =

(airplane) ioc3.

getbean

("airplane01"

);

2.建立例項工廠

首先實現例項工廠類airplaneinstancefactory(其實就是去掉了static)

public

class

airplaneinstancefactory

}

那麼在bean中配置工廠就是:

"airplaneinstancefactory"

class

="com.lzt.factory.airplaneinstancefactory"

>

bean

>

在使用例項工廠建立物件的時候,依然要在容器中註冊物件元件,然後再註冊的使用配置我們的物件要使用哪個工廠建立

1)factory-bean:指定使用哪個工廠例項

2)factory-method:指定使用哪個工廠方法

class

="com.lzt.bean.airplane"

id="airplane02"

factory-bean

="airplaneinstancefactory"

factory-method

="getairplane"

>

value

="wangwu"

>

constructor-arg

>

bean

>

3.使用factorybean類

首先實現例項工廠類bookfactoryimple,繼承了factorybean<>,要實現其中對應的方法。

實現了factorybean的類是spring認為的工廠類

factorybean 泛型是指定你要建立什麼樣的物件

在spring中使用工廠

1.先編寫factorybean的實現類

2.在spring配置檔案中進行註冊

public

class

bookfactoryimple

implements

factorybean

/*getobjecttype 返回建立物件的型別

spring自動呼叫來確認這個物件的型別

*/@override

public class<

?>

getobjecttype()

/* issingleton:是單例嗎?

*/@override

public

boolean

issingleton()

}

然後在容器中註冊

class

="com.lzt.factory.bookfactoryimple"

name

="bookfactoryimple"

>

bean

>

在**中獲取airplane物件就是,直接獲取工廠name即可

book book =

(book) ioc3.

getbean

("bookfactoryimple"

);

為什麼使用工廠模式

非原創,只是搬運。位址 1.工廠模式並不僅僅是用來new出乙個類的物件的。簡單工廠確實如題主的描述所說,是乙個工廠對應乙個類的關係。假設有 包a和 包b,包b是 包a的呼叫者,a向b暴露介面inte cea。在a的內部結構中,實現了inte cea的有classa1,classa2,classa3,...

使用工廠模式優化if else

太多的if else 可讀性太差,需要重構易於後期維護。工廠類 author shou title 工廠類 date 2020 4 229 48 public class strategyfactory 內部類 public static class holder 返回的是單例的工程物件 publi...

在spring中使用quartz

好吧!我承認我對quartz並不熟悉,這種境況需要通過學習它,使用它去改變。先記錄下最進在spring中使用quartz的經驗。spring中提供了對quartz的支援,使得在spring使用quartz變得很容易,只需要在配置檔案中進行配置就行了。當然在路徑中要加入相應的jar包,我用的是quar...