設計模式【2】-- 簡單工廠模式瞭解一下?

[TOC]java

1.簡單工廠模式介紹

工廠模式,比較經常使用,屬於建立型模式,也就是主要是用來建立對象的。工廠模式,有三種,主要分爲:設計模式

  • 簡單工廠模式
  • 工廠方法模式
  • 抽象工廠模式

其中,本文要講的就是,簡單工廠模式,可是簡單工廠模式,並非屬於GoF講的23種設計模式中。簡單工廠模式,也叫靜態工廠方法模式。簡單而言,就是有一個具體的工廠類,用來生產不一樣類型的對象,而這些對象,都有類似的特色,它們都實現同一個接口。markdown

何時應該使用工廠模式?爲何須要工廠模式呢?app

工廠模式主要是用來生成不一樣的對象,也就是屏蔽了對象生成的時候的複雜性,使用的時候不須要知道對象是怎麼生成的,而只須要關注要生成什麼對象。若是構造一個對象特別的費勁,而咱們又常常須要構造生成這個對象,那麼使用工廠模式是比較有利的。咱們都知道,設計模式主要就是爲了設計出更加簡潔,易懂,方便維護,方便拓展的代碼。測試

若是一個很複雜的對象,要在多個地方構建,那麼要是改動一次,咱們就須要找出全部引用的地方,逐一修改,那會很麻煩。ui

簡單工廠模式主要有三種角色:設計

  • 簡單工廠:負責建立全部的實例,依照不一樣的類型建立不一樣的對象,也就是產品。
  • 抽象產品接口:也就是全部產品的一個抽象,通常是全部產品都須要實現的接口。
  • 具體產品:實現抽象產品接口,不一樣的產品作不同的實現。

2.簡單工廠模式舉例

假設如今有一個果園,用來種植各類水果,可是每一種水果種植的方式又不同。首先,先定義一個接口Fruit:code

public interface Fruit {
    public void process();
}

定義三種水果ApplePearOrange:對象

public class Apple implements Fruit{
    public void process() {
        System.out.println("I am an Apple");
    }
}
public class Pear implements Fruit{
    public void process() {
        System.out.println("I am a Pear");
    }
}
public class Orange implements Fruit{
    public void process() {
        System.out.println("I am an Orange");
    }
}

建立一個工廠類:blog

public class FruitFactory {
    public static Fruit getFruit(String name) {
        if ("Apple".equalsIgnoreCase(name)) {
            return new Apple();
        } else if ("Pear".equalsIgnoreCase(name)) {
            return new Pear();
        } else if ("Orange".equalsIgnoreCase(name)) {
            return new Orange();
        }
        return null;
    }
}

測試代碼以下:

public class FruitTest {
    public static void main(String[] args) {
        Fruit apple = FruitFactory.getFruit("Apple");
        apple.process();
        Fruit pear = FruitFactory.getFruit("Pear");
        pear.process();
        Fruit orange = FruitFactory.getFruit("Orange");
        orange.process();
    }
}

測試結果以下:

<img src="https://markdownpicture.oss-cn-qingdao.aliyuncs.com/blog/image-20201218231609645.png" alt="image-20201218231609645" style="zoom:50%;" />

這樣的寫法,若是後續再來了一種水果,那麼只須要實現接口,同時在工廠中增長一個case便可。

3.簡單工廠模式的優劣

優勢:

  • 產品和工廠的職責比較分明,工廠負責建立,產品負責本身的實現
  • 產生/構建產品比較簡單,不須要關注內部細節,只須要知道本身想要哪種。
  • 增長或者修改產品比較簡單,解耦合。

凡事都有優劣,簡單工廠方法的缺點在於:

  • 工廠類的重要性很高,一旦出現問題,影響全部的產品。
  • 產品數量一旦特別多的時候,工廠內部邏輯會比較複雜,不利於理解和維護。
  • 靜態方法不利於繼承和實現。

從以上的優劣,咱們能夠知道,其實若是產品建立過程比較複雜,並且個數很少,都是依靠某些參數來建立的話,抽象出簡單工廠模式,實際上是比較有利的一種作法。

相關文章
相關標籤/搜索