設計模式-簡單工廠
阿新 • • 發佈:2020-07-14
簡單工廠模式的實現分為一下幾個步驟(這裡以工廠建立交通工具為例):
- 定義一個交通工具的總稱(介面)
- 讓實現類(具體的交通工具)實現這個介面
- 定義一個工廠(建立交通工具)
- 創造者呼叫工廠方法
下圖是簡單的類圖可以幫助理解:
1、定義一個交通工具的總稱(介面)
package com.dongl.factorymethod; /** * 定義一個交通工具的總稱 */ public interface Vehicle { //交通工具可以行駛 void go(); }
2、讓實現類(具體的交通工具)實現這個介面
小汽車:
package com.dongl.factorymethod;/** * 小汽車實現交通工具介面 */ public class Car implements Vehicle { @Override public void go() { System.out.println("car go wuwuwuwuw-------------"); } }
公交車:
package com.dongl.factorymethod; /** * 公交車實現交通工具介面 */ public class Bus implements Vehicle { @Override public void go() { System.out.println("bus biubiubiu -------"); } }
飛機:
package com.dongl.factorymethod; /** * 飛機實現交通工具介面 */ public class Plane implements Vehicle { @Override public void go() { System.out.println("plane flying shushua--------------"); } }
2、定義一個工廠(建立交通工具)
package com.dongl.factorymethod; /*** 交通工具工廠 * 通過 Class.forName(clazz.getName()).newInstance() 返回一個具體的實體類 */ public class VehicleFactory { public static Vehicle createVehicle(Class clazz){ Vehicle moveable = null; try { //定義一個型別的交通工具 moveable = (Vehicle)Class.forName(clazz.getName()).newInstance(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { System.out.println("定義錯誤!"); } catch (ClassNotFoundException e) { System.out.println("指定的交通工具不存在---------"); } return moveable; } }
4、創造者呼叫工廠方法
package com.dongl.factorymethod; public class Creator { public static void main(String[] args) { //造小汽車 Vehicle moveable = VehicleFactory.createVehicle(Car.class); moveable.go(); //造飛機 Vehicle moveable1 = VehicleFactory.createVehicle(Plane.class); moveable1.go(); //造公交車 Vehicle moveable2 = VehicleFactory.createVehicle(Bus.class); moveable2.go(); } }