設計模式-簡單工廠模式(靜態工廠)
阿新 • • 發佈:2021-12-02
我覺得工廠模式是特別簡單的一個模式
說白了就是根據不同的情況例項化並返回不同的物件
給出一個計算器的例子
1 import lombok.Data; 2 3 /** 4 * @author wrj 5 * @description 6 * @Date 2021/12/2 10:16 上午 7 */ 8 9 @Data//我使用了lombok 也可以不用,手動寫get,set方法 為了方便閱讀 10 //定義抽象父類運算類 11 abstract class Operation{ 12 13 private Long numA; 14 15 private Long numB; 16 17 public abstract Long getResult(); 18其中,Operation是一個抽象類,定義了兩個引數以及抽象的方法,獲取結果 之後addOperation和subtractOperation繼承了Operation,重寫了getResult方法,用於實現自己獲取結果的邏輯 OperationFactory是這個模式的核心,用於根據操作符返回對應的操作類 這個例子中這樣設計的優點在於 1.如果日後增加其他的操作,比如乘,除,平方,開根各種運算,只需要建立各自的實現了重寫getResult方法即可 2.如需要更改加法的實現,只需要更改addOperation類,不必更改其他類的實現,安全 總結:我認為工廠模式的核心就是根據不同的情況返回各種場景所需的東西,這也是使用工廠模式的場景。一般返回的類都繼承一個父類。} 19 //加法 20 class addOperation extends Operation{ 21 @Override 22 public Long getResult() { 23 return getNumA()+getNumB(); 24 } 25 } 26 //減法 27 class subtractOperation extends Operation{ 28 @Override 29 public Long getResult() { 30 return getNumA()-getNumB(); 31 }32 } 33 //運算工廠 34 class OperationFactory{ 35 36 public static Operation getOperation(String operate){ 37 switch (operate){ 38 case "+": 39 return new addOperation(); 40 case "-": 41 return new subtractOperation(); 42 default: 43 throw new RuntimeException("不存在的運算"); 44 } 45 } 46 } 47 //測試 48 public class Factory { 49 50 public static void main(String[] args) { 51 Operation operation = OperationFactory.getOperation("+"); 52 operation.setNumA(3L); 53 operation.setNumB(8L); 54 System.out.println(operation.getResult()); 55 } 56 }