資源描述:
《JAVA設(shè)計模式工廠模式之簡單工廠》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、您所在的位置:開發(fā)>Java>設(shè)計模式>JAVA設(shè)計模式:工廠模式之簡單工廠(1)JAVA設(shè)計模式:工廠模式之簡單工廠(1)2011-11-1716:03songrysongry的博客我要評論(0)字號:T
2、T在java中,設(shè)計模式是多態(tài)和封裝的重要表現(xiàn)形式,采用設(shè)計模式能夠極大地提升可維護(hù)性和可擴(kuò)展性,那么,同樣工作在jvm上面的Clojure能否運用這些模式,或者說是否同樣需要這些模式呢?AD:序在java中,設(shè)計模式是多態(tài)和封裝的重要表現(xiàn)形式,采用設(shè)計模式能夠極大地提升可維護(hù)性和可擴(kuò)展性,那么,同樣工作在jvm上面的Clojure能否運用這些模式,或者說是否
3、同樣需要這些模式呢?注:本文基于jdk1.6和Clojure1.2簡單工廠先看看簡單工廠的java代碼:首先定義產(chǎn)品的接口:1.public?interface?IProduct?{?2.?3.????/**?4.?????*?使用產(chǎn)品?5.?????*?@param?msg?6.?????*/?7.????public?void?use(String?msg);?8.}?然后是實現(xiàn)了這個接口的兩個具體產(chǎn)品Product1和Product2:1.public?class?Product1?implements?IProduct?{?2.?3.????@Overri
4、de?4.????public?void?use(String?msg)?{?5.????????System.out.println("Product1?use:"+msg);?6.????}?7.?8.}?9.?1.public?class?Product2?implements?IProduct?{?2.?3.????@Override?4.????public?void?use(String?msg)?{?5.????????System.out.println("Product2?use:"+msg);?6.????}?7.?8.}?最后是根據(jù)類型獲取產(chǎn)
5、品的簡單工廠:1.public?class?SimpleFactory?{?2.?3.????/**?4.?????*?根據(jù)產(chǎn)品類型生產(chǎn)產(chǎn)品?5.?????*?@param?productType?6.?????*?@return?7.?????*/?8.????public?static?IProduct?factory(String?productType){?9.????????if(productType.equals("1"))?10.????????????return?new?Product1();?11.????????else?if(produc
6、tType.equals("2"))?12.????????????return?new?Product2();?13.????????return?null;?14.????}?15.}?這樣,我們在java中就構(gòu)建了能夠生產(chǎn)出兩個不同產(chǎn)品的簡單工廠了。接下來,我們調(diào)用一下:1./**?2.?*?簡單工廠調(diào)用?3.?*?@author?RoySong?-?2011-10-27?4.?*/?5.public?class?SimpleFactoryTest?{?6.?7.????/**?8.?????*?@param?args?9.?????*/?10.????pu
7、blic?static?void?main(String[]?args)?{?11.????????IProduct?product1?=?SimpleFactory.factory("1");?12.????????product1.use("something");?13.?????????14.????????IProduct?product2?=?SimpleFactory.factory("2");?15.????????product2.use("something");?16.????}?1.?2.}?運行這個調(diào)用程序,我們能夠得到預(yù)期的結(jié)果:1.P
8、roduct1?use:something?2.Product2?use:something?那么,在Clojure中應(yīng)該如何實現(xiàn)呢?首先,讓我們再回顧一下采用簡單工廠的目的,這是為了將業(yè)務(wù)對象的產(chǎn)生和業(yè)務(wù)方法的執(zhí)行進(jìn)行解耦,使得業(yè)務(wù)方法執(zhí)行時無須關(guān)注業(yè)務(wù)對象的類型。為了達(dá)到這個目的,我們提取了業(yè)務(wù)對象的接口IProduct(在實際的應(yīng)用中也有可能是一個父類Product),它的里面包含了所有業(yè)務(wù)對象的共同操作use(在實際應(yīng)用中可能不止這一種業(yè)務(wù)操作,當(dāng)然也不叫use)的方法聲明。然后,由SimplyFactory來創(chuàng)建IProduct的實例對象,然后調(diào)用use
9、業(yè)務(wù)方法。