資源描述:
《設(shè)計(jì)模式之4 工廠模式》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、工廠模式的核心在于new.也就是說,不讓使用者直接new一個(gè)對象。而是通過一個(gè)getInstance來得到這個(gè)對象。也就是說,在new的時(shí)候,要有權(quán)限檢查怎么辦,有沒有這方面的資質(zhì)?那么對于工廠生成這個(gè)對象的時(shí)候,不能隨便new。1.單例模式packagecom.bjsxt.dp.factory;importjava.util.ArrayList;importjava.util.List;publicclassCarimplementsMoveable{//單例模式,定義為private的方法privatestaticCarcar=newCar();//多例模式,就是用一個(gè)數(shù)組來
2、存放好多car//privatestaticListcars=newArrayList();//構(gòu)造方法為靜態(tài)privateCar(){}//靜態(tài)工廠模式publicstaticCargetInstance(){returncar;}publicvoidrun(){System.out.println("冒著煙奔跑中car.......");}}2.簡單工廠模式有抽象類VehicleFactory:packagecom.bjsxt.dp.factory;//交通工具的工廠,相當(dāng)于一個(gè)interface,用來實(shí)現(xiàn)多態(tài)。//在test當(dāng)中為了靈活實(shí)現(xiàn)。public
3、abstractclassVehicleFactory{//在這里同樣定義了create方法,這個(gè)方法的返回值是Moveable類型。abstractMoveablecreate();}有具體實(shí)現(xiàn)類CarFactory和PlaneFactorypackagecom.bjsxt.dp.factory;//CarFactory繼承了VehicleFactory抽象類publicclassCarFactoryextendsVehicleFactory{publicMoveablecreate(){returnnewCar();}}packagecom.bjsxt.dp.factory;
4、//飛機(jī)的工廠,用工廠來產(chǎn)生plane。publicclassPlaneFactoryextendsVehicleFactory{//創(chuàng)建方法publicMoveablecreate(){//返回一個(gè)planereturnnewPlane();}}有接口Moveablepackagecom.bjsxt.dp.factory;//可以移動的,各種交通工具。publicinterfaceMoveable{voidrun();}具體的實(shí)現(xiàn)car和plane都實(shí)現(xiàn)了Moveable接口packagecom.bjsxt.dp.factory;importjava.util.ArrayLis
5、t;importjava.util.List;publicclassCarimplementsMoveable{//單例模式,定義為private的方法publicstaticCarcar=newCar();//多例模式,就是用一個(gè)數(shù)組來存放好多car//privatestaticListcars=newArrayList();//構(gòu)造方法為靜態(tài)publicCar(){}//靜態(tài)工廠模式publicstaticCargetInstance(){returncar;}publicvoidrun(){System.out.println("冒著煙奔跑中car...
6、....");}}packagecom.bjsxt.dp.factory;publicclassPlaneimplementsMoveable{@Overridepublicvoidrun(){System.out.println("扇著翅膀前進(jìn)中plane....");}}實(shí)現(xiàn)關(guān)系為:CarFactory和PlaneFactory都繼承自VehicleFactory。car和plane都實(shí)現(xiàn)了moveable接口。在VehicleFactory當(dāng)中的create()方法的返回值是moveable。在這個(gè)例子中,可以控制1.生產(chǎn)過程,2,交通工具的生產(chǎn)。使用者如下:package
7、com.bjsxt.dp.factory;publicclassTest{publicstaticvoidmain(String[]args){//通過VehicleFactory父類的引用來指向子類對象。VehicleFactoryfactory=newBroomFactory();//返回的結(jié)果是對應(yīng)子類的對象,目前為broom.也就是說,new什么就產(chǎn)生什么Moveablem=factory.create();m.run();}}1.抽象工廠模式是簡單工廠模式的擴(kuò)展,就是一