工廠方法的目的是使建立的對象和使用的對象是分離的,而且客戶端老是引用抽象工廠和抽象產品:java
一、靜態工廠方法:編程
java標準庫的靜態方法,如:Integer.valueOf();緩存
Integer便是產品又是靜態工廠,它提供了靜態工廠valueOf()來建立Integer;學習
好處在於靜態工廠方法內部可進行優化,可返回一個新的實例Integer,也可直接返回一個緩存的Integer實例,節約資源。
工廠方法能夠隱藏建立產品的細節,且不必定每次都會真正建立產品,徹底能夠返回緩存的產品,從而提高速度並減小內存消耗。
靜態工廠方法List.of();
List<String> list = List.of("A","B","C");
ArrayList<String> list = List.of("A","B","C");
調用方獲取的產品老是List接口,並不關心實際類型,可修改成返回java.ArrayList;這就是里氏替換原則:返回實現接口的任意子類均可以知足該方法的要求,且不影響調用方。
老是引用接口而非實現類,能容許調用子類而不影響調用方,儘量的面向抽象編程。
備註:本隨筆爲學習廖雪峯大佬的Java教程過程當中記的筆記;附上原文連接:
https://www.liaoxuefeng.com/wiki/1252599548343744/1281319170474017public final class Integer { public static Integer valueOf(int i) { if (i >= IntegerCache.low && i <= IntegerCache.high) return IntegerCache.cache[i + (-IntegerCache.low)]; return new Integer(i); } ... }