java設計模式 – 工廠模式

laoliu_cc發表於2020-11-10

工廠模式(Factory Pattern)是 Java 中最常用的設計模式之一。這種型別的設計模式屬於建立型模式,它提供了一種建立物件的最佳方式。
在工廠模式中,我們在建立物件時不會對客戶端暴露建立邏輯,並且是通過使用一個共同的介面來指向新建立的物件
步驟 1
建立一個介面:

public interface Shape {
   void draw();
}

步驟 2
建立實現介面的實體類。

public class Rectangle implements Shape {
   @Override//Rectangle子類
   public void draw() {
      System.out.println("Inside Rectangle::draw() method.");
   }
}
public class Square implements Shape {
   @Override//Square子類
   public void draw() {
      System.out.println("Inside Square::draw() method.");
   }
}
public class Circle implements Shape {
   @Override//Circle子類
   public void draw() {
      System.out.println("Inside Circle::draw() method.");
   }
}

步驟 3
建立一個工廠,生成基於給定資訊的實體類的物件。

public class ShapeFactory {   
   //使用 getShape 方法獲取形狀型別的物件
   public Shape getShape(String shapeType){
      if(shapeType == null){
         return null;
      }        
      if(shapeType.equalsIgnoreCase("CIRCLE")){
         return new Circle();
      } else if(shapeType.equalsIgnoreCase("RECTANGLE")){
         return new Rectangle();
      } else if(shapeType.equalsIgnoreCase("SQUARE")){
         return new Square();
      }
      return null;
   }
}

步驟 4
使用該工廠,通過傳遞型別資訊來獲取實體類的物件。


public class FactoryPatternDemo { 
   public static void main(String[] args) {
      ShapeFactory shapeFactory = new ShapeFactory();
 
      //獲取 Circle 的物件,並呼叫它的 draw 方法
      Shape shape1 = shapeFactory.getShape("CIRCLE");
 
      //呼叫 Circle 的 draw 方法
      shape1.draw();
 
      //獲取 Rectangle 的物件,並呼叫它的 draw 方法
      Shape shape2 = shapeFactory.getShape("RECTANGLE");
 
      //呼叫 Rectangle 的 draw 方法
      shape2.draw();
 
      //獲取 Square 的物件,並呼叫它的 draw 方法
      Shape shape3 = shapeFactory.getShape("SQUARE");
 
      //呼叫 Square 的 draw 方法
      shape3.draw();
   }
}

步驟 5
執行程式,輸出結果:

Inside Circle::draw() method.
Inside Rectangle::draw() method.
Inside Square::draw() method.

應用:解耦程式碼,(BeanFactory 用來建立物件的例項,貫穿於 BeanFactory / ApplicationContext介面的核心理念)

相關文章