Java工廠模式的三種實作案例解析
工廠模式是一種常用的設計模式,它可以將物件的建立與使用相分離,使得程式的可擴展性更好。在Java中,工廠模式有三種常見的實務案例:簡單工廠模式、工廠方法模式和抽象工廠模式。本文將分別對這三種實踐案例進行詳細解析,並提供具體的程式碼範例。
簡單工廠模式是最基礎的工廠模式,它透過一個工廠類別來建立物件。在簡單工廠模式中,客戶端只需要與工廠類別進行交互,而不需要直接與特定的產品類別互動。
下面以建立圖形物件為例,展示簡單工廠模式的實踐:
// 建立圖形介面
public interface Shape {
void draw();
}
// 建立特定的圖形類別
public class Circle implements Shape {
@Override public void draw() { System.out.println("画一个圆形"); }
}
public class Rectangle implements Shape {
@Override public void draw() { System.out.println("画一个矩形"); }
}
// 建立工廠類別
public class ShapeFactory {
public static Shape createShape(String type) { switch (type) { case "circle": return new Circle(); case "rectangle": return new Rectangle(); default: throw new IllegalArgumentException("不支持的图形类型"); } }
}
// 用戶端使用範例
public class Client {
public static void main(String[] args) { Shape circle = ShapeFactory.createShape("circle"); circle.draw(); Shape rectangle = ShapeFactory.createShape("rectangle"); rectangle.draw(); }
}
在上述程式碼中,透過ShapeFactory工廠類別的createShape方法來建立具體的圖形物件。客戶端只需要呼叫該方法並傳入對應的參數,即可取得對應的圖形物件並進行後續操作。
工廠方法模式是一種稍微複雜的工廠模式,在工廠方法模式中,每個特定的產品類別都對應一個工廠類。客戶端透過與對應的工廠類別交互,來創建具體的產品物件。
下面以建立汽車物件為例,展示工廠方法模式的實踐:
// 建立汽車介面
public interface Car {
void drive();
}
// 建立具體的汽車類別
public class BenzCar implements Car {
@Override public void drive() { System.out.println("开奔驰车"); }
}
public class BmwCar implements Car {
@Override public void drive() { System.out.println("开宝马车"); }
}
#// 建立工廠介面
public interface CarFactory {
Car createCar();
}
// 建立特定的工廠類別
public class BenzCarFactory implements CarFactory {
@Override public Car createCar() { return new BenzCar(); }
}
public class BmwCarFactory implements CarFactory {
@Override public Car createCar() { return new BmwCar(); }
}
// 用戶端使用範例
public class Client {
public static void main(String[] args) { CarFactory benzFactory = new BenzCarFactory(); Car benzCar = benzFactory.createCar(); benzCar.drive(); CarFactory bmwFactory = new BmwCarFactory(); Car bmwCar = bmwFactory.createCar(); bmwCar.drive(); }
}
在上述程式碼中,透過CarFactory工廠介面及其對應的特定工廠類別來建立具體的汽車物件。客戶端只需要與對應的工廠類別進行交互,即可取得對應的汽車物件並進行後續操作。
抽象工廠模式是最複雜的工廠模式,在抽象工廠模式中,每個特定的工廠類別都可以創建多個不同類型的產品對象。客戶端透過與工廠類別交互,來創建一系列相關的產品物件。
下面以建立手機物件為例,展示抽象工廠模式的實務:
// 建立手機介面
public interface Phone {
void call();
}
#// 創建具體的手機類別
public class ApplePhone implements Phone {
@Override public void call() { System.out.println("使用苹果手机打电话"); }
}
public class HuaweiPhone implements Phone {
@Override public void call() { System.out.println("使用华为手机打电话"); }
}
// 建立工廠介面
public interface PhoneFactory {
Phone createPhone();
}
// 建立特定的工廠類別
public class ApplePhoneFactory implements PhoneFactory {
@Override public Phone createPhone() { return new ApplePhone(); }
}
public class HuaweiPhoneFactory implements PhoneFactory {
@Override public Phone createPhone() { return new HuaweiPhone(); }
}
// 用戶端使用範例
public class Client {
public static void main(String[] args) { PhoneFactory appleFactory = new ApplePhoneFactory(); Phone applePhone = appleFactory.createPhone(); applePhone.call(); PhoneFactory huaweiFactory = new HuaweiPhoneFactory(); Phone huaweiPhone = huaweiFactory.createPhone(); huaweiPhone.call(); }
}
在上述程式碼中,透過PhoneFactory工廠介面及其對應的具體工廠類別來創建具體的手機物件。客戶端只需要與對應的工廠類別進行交互,即可取得對應的手機物件並進行後續操作。
總結:
上述分別介紹了工廠模式的三種實踐案例:簡單工廠模式、工廠方法模式和抽象工廠模式。這三種模式都能夠有效地實現物件的創建和使用的分離,提高程式的可擴展性。在實際的開發中,可以根據特定的需求選擇合適的工廠模式來使用。
以上是解析Java工廠模式的三個實際應用案例的詳細內容。更多資訊請關注PHP中文網其他相關文章!