Java工程師在編寫代碼時,常會使用工廠方法來創建對象。這是一種設計模式,它提供了一種創建對象的標準方法,從而使代碼更加靈活、可維護和可擴展。Java中工廠方法又分為普通工廠方法和抽象工廠方法。
public interface Animal { void name(); } public class Dog implements Animal { @Override public void name() { System.out.println("我是一只狗。"); } } public class Cat implements Animal { @Override public void name() { System.out.println("我是一只貓。"); } } public class AnimalFactory { public static Animal createAnimal(String type) { if ("Dog".equals(type)) { return new Dog(); } else if ("Cat".equals(type)) { return new Cat(); } else { return null; } } } public class Demo { public static void main(String[] args) { Animal dog = AnimalFactory.createAnimal("Dog"); dog.name(); Animal cat = AnimalFactory.createAnimal("Cat"); cat.name(); } }
上述代碼是普通工廠方法的實現。在通過靜態方法 createAnimal() 中傳入不同的參數類型來創建狗或貓對象。而抽象工廠方法則是更高級和更靈活的方法,它通過工廠的實例來創建一系列相關或依賴對象。
public interface Animal { void name(); } public class Dog implements Animal { @Override public void name() { System.out.println("我是一只狗。"); } } public class Cat implements Animal { @Override public void name() { System.out.println("我是一只貓。"); } } public interface AnimalFactory { Animal createAnimal(); } public class DogFactory implements AnimalFactory { @Override public Animal createAnimal() { return new Dog(); } } public class CatFactory implements AnimalFactory{ @Override public Animal createAnimal() { return new Cat(); } } public class Demo { public static void main(String[] args) { AnimalFactory dogFactory = new DogFactory(); Animal dog = dogFactory.createAnimal(); dog.name(); AnimalFactory catFactory = new CatFactory(); Animal cat = catFactory.createAnimal(); cat.name(); } }
上述代碼是抽象工廠方法的實現。它使用了接口來定義不同的具體工廠類,并通過工廠的實例來創建不同的狗或貓對象。抽象工廠方法更加靈活和擴展性強,具體工廠類可以隨時增加、替換或移除,以滿足不同的需求。