簡單工廠模式( Simple Factory Pattern )

cavan丶keke發表於2024-06-09
簡單工廠模式(Simple Factory Pattern),在工廠類中物件決定建立出哪一種產品類的例項。這些產品類都實現了相同的介面,或者繼承了相同的父類。

結構圖

  • Factory工廠角色):它是核心,負責實現建立所有例項的內部邏輯。在工廠類中,提供了一個靜態方法,可以直接被外界直接呼叫,以建立具體產品物件。
  • Product抽象產品角色):具體產品物件的父類或者介面,具體產品物件都是其子類物件。
  • ConcreteProduct具體產品類):它是建立目標,所有建立的物件都充當這個角色的某個具體類的例項。

簡單工廠程式碼

抽象產品角色

public abstract class Operation {
    /**
     * 獲取兩個數運算後的值
     *
     * @param numA 第一個數
     * @param numB 第二個數
     * @return 結果
     */
    public abstract double getResult(double numA, double numB);
}

具體產品類,包括加法、減法、乘法、除法四個運算的具體實現

public class Add extends Operation {
    @Override
    public double getResult(double numA, double numB) {
        return numA + numB;
    }
}
public class Sub extends Operation {
    @Override
    public double getResult(double numA, double numB) {
        return numA - numB;
    }
}
public class Mul extends Operation {
    @Override
    public double getResult(double numA, double numB) {
        return numA * numB;
    }
}
public class Div extends Operation {
    @Override
    public double getResult(double numA, double numB) {
        if (numB == 0) {
            System.out.println("除數不能為0");
        }
        return numA / numB;
    }
}

工廠類

public class OperationFactory {
    public static Operation createOperation(String operate) {
        Operation operation = null;
        switch (operate) {
            case "+":
                operation = new Add();
                break;
            case "-":
                operation = new Sub();
                break;
            case "*":
                operation = new Mul();
                break;
            case "/":
                operation = new Div();
                break;

        }
        return operation;
    }
}

客戶端

class Client {
    public static void main(String[] args) {
        Operation operation = OperationFactory.createOperation("+");
        operation.getResult(1, 1);
    }
}

相關文章