首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 並發編程學習筆記:工廠方法模式深度解析

     編輯:Java 相關知識

Java 設計模式:工廠方法模式深度解析

本文原標題為「Synchronized 簡介」,但實際內容為工廠方法模式。此處依內容重新整理為工廠方法模式教學。

模式定義

工廠方法模式定義一個創建產品物件的工廠介面,將實際創建工作推遲到子類。核心工廠類不再負責具體產品創建,成為抽象工廠角色,僅負責定義具體工廠子類必須實現的介面,使系統在不修改具體工廠角色情況下引入新產品。

角色結構

  • 抽象產品:定義產品介面
  • 具體產品:實現抽象產品介面
  • 抽象工廠:宣告工廠方法
  • 具體工廠:實現工廠方法,創建具體產品

實戰範例:圓珠筆與筆芯

場景:三種筆芯(紅、藍、黑),用戶透過圓珠筆獲取對應顏色筆跡。

1. 抽象產品

public abstract class PenCore {
    String color;
    public abstract void writeWord(String s);
}

2. 具體產品

public class RedPenCore extends PenCore {
    RedPenCore(){ color="紅色"; }
    public void writeWord(String s){ System.out.println("寫出"+color+"的字:"+s); }
}
public class BluePenCore extends PenCore {
    BluePenCore(){ color="藍色"; }
    public void writeWord(String s){ System.out.println("寫出"+color+"的字:"+s); }
}
public class BlackPenCore extends PenCore {
    BlackPenCore(){ color="黑色"; }
    public void writeWord(String s){ System.out.println("寫出"+color+"的字:"+s); }
}

3. 抽象工廠

public abstract class BallPen {
    BallPen(){ System.out.println("生產了一支裝有"+getPenCore().color+"筆芯的圓珠筆"); }
    public abstract PenCore getPenCore(); // 工廠方法
}

4. 具體工廠

public class RedBallPen extends BallPen {
    public PenCore getPenCore(){ return new RedPenCore(); }
}
public class BlueBallPen extends BallPen {
    public PenCore getPenCore(){ return new BluePenCore(); }
}
public class BlackBallPen extends BallPen {
    public PenCore getPenCore(){ return new BlackPenCore(); }
}

5. 客戶端使用

public class Application {
    public static void main(String args[]){
        PenCore penCore;
        BallPen ballPen = new BlueBallPen();
        penCore = ballPen.getPenCore();
        penCore.writeWord("你好,很高興認識你");
        ballPen = new RedBallPen();
        penCore = ballPen.getPenCore();
        penCore.writeWord("How are you");
        ballPen = new BlackBallPen();
        penCore = ballPen.getPenCore();
        penCore.writeWord("nice to meet you");
    }
}

總結

  • 屬於類創建型模式,利用多態性克服簡單工廠模式缺點。
  • 核心工廠類不負責具體創建,僅定義介面,新增產品只需新增對應具體工廠,符合開閉原則。
  • 優點:系統擴展性好,封裝創建細節。缺點:新增產品需同步新增工廠,類數量成對增加,增加複雜度。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved