在Java設計模式中,單例模式和工廠模式是兩種非常常用的模式。下面我們分別來介紹一下單例模式和工廠模式的實現方法以及應用場景。
單例模式
單例模式是一種保證在整個應用程序中只存在一個實例的設計模式。一個經典的單例模式的實現方法是使用單例模式類中的靜態私有成員變量來保存這個唯一的實例,在需要的時候返回它。
public class Singleton { private static Singleton instance = new Singleton(); private Singleton() {} public static Singleton getInstance() { return instance; } }
在這個例子中,我們用一個私有的構造器來防止外部創建實例,而靜態變量instance則保證了這個類實例的唯一性。另外,這個實例并不是在用戶首次調用getInstance()方法時才被創建,而是在單例類被加載時就創建好。
工廠模式
工廠模式是一種讓客戶端代碼從實際創建對象的工作中解耦出來的設計模式。在工廠模式中,客戶端不直接使用new操作符來創建對象,而是應該向一個工廠類請求所需的對象。
public interface Product { void use(); } public class ProductA implements Product { public void use() { System.out.println("Product A"); } } public class ProductB implements Product { public void use() { System.out.println("Product B"); } } public class Factory { public static Product createProduct(String type) { switch(type) { case "A": return new ProductA(); case "B": return new ProductB(); default: throw new IllegalArgumentException("Invalid product type: " + type); } } }
在這個例子中,我們定義了一個產品接口Product和兩個具體產品ProductA和ProductB。而Factory類通過根據給定的參數返回不同的產品實例。由于客戶端代碼從來不直接使用new操作符來創建產品實例,而是通過一個工廠類進行創建,所以如果我們需要增加一種新的產品實現ProductC,我們只需要將ProductC類實現Product接口,并在工廠類中加入一個相應的分支來處理ProductC即可。