簡單工廠的設計模式

簡介

簡單工廠模式(Simple Factory Pattern)屬於類的創新型模式,由於工廠類的方法大多數是靜態的,又叫靜態工廠方法模式(Static FactoryMethod Pattern),它通過專門定義一個類來負責創建其他類的實例,被創建的實例通常都具有共同的父類。

代碼實現

1 首先創建一個接口 (car) 有一個 跑的功能

package com.guxiang.factory.simplefactory;

public interface Car {
    void run();
}

2 寶馬和奔馳兩輛豪車分別實現了這個car接口

public class BWM implements Car{

    public void run() {
        System.out.println("寶馬在路上飛奔");
    }

}
public class Benz implements Car {

    public void run() {
        System.out.println("奔馳在路上飛奔");
    }

}

如果是不使用工廠設計模式,那麼代碼很簡單

public class NoFactory {
    public static void main(String[] args) {
        Car c1 = new Benz();
        Car c2 = new BWM();

        c1.run();
        c2.run();
    }
}

相應的uml類圖如下

不使用簡單工廠設計模式的情況

如圖,我們可以看見 它雖然代碼相對簡潔 但是卻與3個類發生了關係 如果產品種類加多 那麼就會與更多類發生關係 ,違法了 迪米特法則


下面介紹使用簡單工廠設計模式的方法

簡單工廠有兩種方式實現

第一種
public class CarFactory {

    public static Car createCar( String type) {
        if ("寶馬".equals(type)) {
            return new BWM();
        }else if ("奔馳".equals(type)) {
            return new Benz();
        }else {
            return null;
        }
    }
}

第二種

public class CarFactory2 {
    public static Car createBenz() {
        return new Benz();
    }

    public static Car createBWM() {
        return new BWM();
    }
}

第一種的調用方式如下

public class HaveFactory {
    public static void main(String[] args) {
        Car car1 = CarFactory.createCar("奔馳");
        Car car2 = CarFactory.createCar("寶馬");

        car1.run();
        car2.run();
    }
}

第二種的調用方式如下

public class HaveFactory {
    public static void main(String[] args) {
        Car car1 = CarFactory2.createBenz();
        Car car2 = CarFactory2.createBWM();

        car1.run();
        car2.run();
    }
}

他們的UML類圖實現如下
這裏寫圖片描述

可以發現,使用簡單工廠,那麼無論生產多少種類的汽車 我們都僅僅只需要和兩個類發生關係。這樣更難體現面向對象的好處。

發佈了43 篇原創文章 · 獲贊 91 · 訪問量 22萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章