1. 程式人生 > 其它 >Leetcode75. 顏色分類(C++思路與程式碼)

Leetcode75. 顏色分類(C++思路與程式碼)

技術標籤:設計模式

工廠設計模式

工廠模式(Factory Pattern)是 Java 中最常用的設計模式之一。這種型別的設計模式屬於建立型模式,它提供了一種建立物件的最佳方式。之前我們建立類物件時, 都是使用new 物件的形式建立, 除new 物件方式以外, 工廠模式也可以建立物件.

工廠模式的作用

定義一個建立物件的介面,讓其子類自己決定例項化哪一個工廠類,工廠模式使其建立過程延遲到子類進行。可以解決類與類之間耦合的問題.

注意事項

作為一種建立類模式,在任何需要生成複雜物件的地方,都可以使用工廠方法模式。有一點需要注意的地方就是複雜物件適合使用工廠模式,而簡單物件,特別是只需要通過 new 就可以完成建立的物件,無需使用工廠模式。如果使用工廠模式,就需要引入一個工廠類,會增加系統的複雜度。

工廠模式的實現

  1. 編寫一個Car介面, 提供run方法
  2. 編寫一個Falali類實現Car介面,重寫run方法
  3. 編寫一個Benchi類實現Car介面
  4. 提供一個CarFactory(汽車工廠),用於生產汽車物件
  5. 定義CarFactoryTest測試汽車工廠

程式碼實現

1.編寫一個Car介面, 提供run方法

public interface Car {
    public void run();
}

2.編寫一個Falali類實現Car介面,重寫run方法

public class Falali implements Car {
    @Override
    public void run
() { System.out.println("法拉利以每小時500公里的速度在奔跑....."); } }

3.編寫一個Benchi類實現Car介面

public class Benchi implements Car {
    @Override
    public void run() {
        System.out.println("賓士汽車以每秒1米的速度在挪動.....");
    }
}

4.提供一個CarFactory(汽車工廠),用於生產汽車物件

public class CarFactory
{ /** * @param id : 車的標識 * benchi : 代表需要建立Benchi類物件 * falali : 代表需要建立Falali類物件 * 如果傳入的車標識不正確,代表當前工廠生成不了當前車物件,則返回null * @return */ public Car createCar(String id){ if("falali".equals(id)){ return new Falali(); }else if("benchi".equals(id)){ return new Benchi(); } return null; } }

5.定義CarFactoryTest測試汽車工廠

public class CarFactoryTest {
    public static void main(String[] args) {
        CarFactory carFactory = new CarFactory();
        Car benchi = carFactory.createCar("benchi");
        benchi.run();
        Car falali = carFactory.createCar("falali");
        falali.run();
    }
}