1. 程式人生 > 實用技巧 >設計模式-簡單工廠

設計模式-簡單工廠

簡單工廠模式的實現分為一下幾個步驟(這裡以工廠建立交通工具為例):

  • 定義一個交通工具的總稱(介面)
  • 讓實現類(具體的交通工具)實現這個介面
  • 定義一個工廠(建立交通工具)
  • 創造者呼叫工廠方法

下圖是簡單的類圖可以幫助理解:

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();
    }
}