Leetcode75. 顏色分類(C++思路與程式碼)
阿新 • • 發佈:2020-12-15
技術標籤:設計模式
工廠設計模式
工廠模式(Factory Pattern)是 Java 中最常用的設計模式之一。這種型別的設計模式屬於建立型模式,它提供了一種建立物件的最佳方式。之前我們建立類物件時, 都是使用new 物件的形式建立, 除new 物件方式以外, 工廠模式也可以建立物件.
工廠模式的作用
定義一個建立物件的介面,讓其子類自己決定例項化哪一個工廠類,工廠模式使其建立過程延遲到子類進行。可以解決類與類之間耦合的問題.
注意事項
作為一種建立類模式,在任何需要生成複雜物件的地方,都可以使用工廠方法模式。有一點需要注意的地方就是複雜物件適合使用工廠模式,而簡單物件,特別是只需要通過 new 就可以完成建立的物件,無需使用工廠模式。如果使用工廠模式,就需要引入一個工廠類,會增加系統的複雜度。
工廠模式的實現
- 編寫一個Car介面, 提供run方法
- 編寫一個Falali類實現Car介面,重寫run方法
- 編寫一個Benchi類實現Car介面
- 提供一個CarFactory(汽車工廠),用於生產汽車物件
- 定義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();
}
}