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...