java和python的區別 java工廠設計模式詳解

多條告白如次劇本只需引入一次
媒介
即日來和小搭檔們瓜分下安排形式中的工場形式啦
一、工場形式
咱們都領會,安排形式有23種,依照功效和運用場景不妨分為三大類:
創造型形式構造型形式動作型形式工場安排形式(Factory Pattern)呢,即是一種很罕見的安排形式,屬于創造型形式的,重要效率即是來創造東西的~
道理圖
先來看一個小栗子
二、大略工場形式(非23種)
道理圖
?
例子的話,發覺也挺多的 比方百般品牌的電腦呀,大哥大呀,家電呀……
比方條記本電腦的例子
抽取大眾接口
這邊就只供給一個歸來品牌的接口
public interface ILaptop {String brand();}1.2.3.接話柄現類
這邊就舉兩個例子~
public class HuaWeiLaptop implements ILaptop{@Overridepublic String brand() {return "HuaWei";}}?public class MacLaptop implements ILaptop {@Overridepublic String brand() {return "Mac";}}1.2.3.4.5.6.7.8.9.10.11.12.13.工場類
最重要的即是這個工場類了,咱們把創造東西的本領將給它~
public class LaptopFactory {?public static ILaptop createLaptop(String brand){switch (brand){case "HuaWei":return new HuaWeiLaptop();case "Mac":return new MacLaptop();default:return null;}}}1.2.3.4.5.6.7.8.9.10.11.12.13.嘗試
就如許,咱們就大略的實行了一個工場形式的運用了~ ,此后創造東西就徑直調用功廠的本領就不妨了
public class LaptopMain {public static void main(String[] args) {ILaptop hw = LaptopFactory.createLaptop("HuaWei");String brand = hw.brand();System.out.println(brand);}}1.2.3.4.5.6.7.固然,這個是更大略的工場形式例子了,也叫作 大略工場形式
固然這個也有很鮮明的缺點,以是咱們再來看看這個 工場本領形式
三、工場本領形式
道理圖
?
想想大略工場的寫法,將創造東西的一切操縱都封裝在一個工場里,是不對理的,以是咱們要進一步解耦
抽取工場大眾接口
public interface ILaptopFactory {ILaptop createLaptop();}1.2.3.工場實行類
public class HuaweiLaptopFactory implements ILaptopFactory{@Overridepublic ILaptop createLaptop() {return new HuaWeiLaptop();}}1.2.3.4.5.6.嘗試
大略變換上頭嘗試案例的前兩句代碼即可
HuaweiLaptopFactory huaweiLaptopFactory = new HuaweiLaptopFactory(); ILaptop mac =huaweiLaptopFactory.createLaptop();1.2.是否很大略的就實行了這個工場形式了
四、籠統工場形式
道理圖
?
那么工場嘛,確定不只一條消費線,它確定有其余的交易,比方大哥大呀,其余電器啥的 。
以是咱們再反復上頭條記本產物的例子,再建少許其余類,而后也經過工場類去創造它即可 。
籠統工場
先設置一個籠統工場
public abstract class AbstractFactory {public abstract IPhone createPhone();public abstract ILaptop createLaptop();}1.2.3.4.工場實行類
也就多了一個罷了呀~
public class HuaweiFactory extends AbstractFactory{@Overridepublic IPhone createPhone() {return new HuaWeiPhone();}?@Overridepublic ILaptop createLaptop() {return new HuaWeiLaptop();}}1.2.3.4.5.6.7.8.9.10.11.五、總結
在運用工場形式時,咱們不妨創造從 大略工場(非23種) ——》 工場本領 ——》籠統工場
這是一個連接擴充,解耦的進程,咱們不妨在名目種按照須要舉行采用~
比方 產物多的話就選籠統工場,簡單的話就徑直用功廠大概大略工場就不妨了
至此,咱們領會到工場形式是屬于第23中學安排形式中的創造型形式,重要用處即是創造東西,同聲簡單步調解耦 。
接著,咱們再來想想 Spring 中庸工場形式相關的
說到這邊,你想到什么了呢?
不領會的話,就默念 Factory,Factory,Factory,嘿嘿哈~
是否腦際中一下子展示出來了這兩貨
BeanFactoryFactoryBean從名字就不妨看出這兩貨和工場相關 (辨別經過 getBean 和 getObject 獲得東西)
那么咱們先來引見下她們叭
六、BeanFactory
源碼的之一句話
The root interface for accessing a Spring bean container. (IOC的根接口)
不妨創造它利害常中心的組件 。
按照莊重的人命周期
?
不妨創造,經過 BeanFactory 創造一個 Bean 要過程特殊莊重的過程處置,很煩瑣 。
本領
?
本領有很多,比方 獲得別號呀,典型呀,能否是單例,原形等
經過 getBean 去獲得東西
重要效率
按照 BeanDefinition 天生相映的 Bean 東西 。
?
七、FactoryBean
源碼
不妨創造就這么三個本領,一個小工場
?
經過 getObject 本領來歸來一個東西

推薦閱讀