提到工廠模式,想必大家都很熟悉,工廠模式作為一種設計模式,同樣在salesforce中適用。
舉一個例子,筆作為基類,可以有鋼筆,鉛筆,圓珠筆等等。有一個筆的工廠,當你向它要鋼筆,它就會生產一支鋼筆;當你向他要鉛筆,它就會生產一直鉛筆。
根據上述描述,我們可以發現以下幾點:
1.需要有一個筆的基類,並封裝相應公有方法;
2.需要有相關的筆的子類,繼承基類並實現公有方法並拓展相關自身方法;
3.有一個工廠,通過傳遞參數來確定實例化何種筆。
基類:Pen
1 //類似於java中的abstract 2 public abstract class Pen { 3 //定義getPenName方法,實現類需要實現此方法 4 public abstract String getPenName(); 5 }
子類定義兩個,Pencil 以及Gel Pen並實現getPenName方法。
子類:Pencil
1 public class Pencil extends Pen{ 2 override public String getPenName() { 3 return 'Pencil'; 4 } 5 }
子類:GelPen
1 public class GelPen extends Pen{ 2 override public String getPenName() { 3 return 'GelPen'; 4 } 5 }
定義一個常量類,存儲static final類型,便於類之間調用:Sys_Constants
1 public without sharing class Sys_Constants { 2 3 public static final String CATEGORY_PENCIL = 'pencil'; 4 5 public static final String CATEGORY_GEL_PEN = 'gelPen'; 6 7 }
工廠類,用於提供相應create方法創建Pen:PenFactory
1 public class PenFactory { 2 public static Pen create(String penCategory) { 3 Pen tempPen = null; 4 if(penCategory != null) { 5 if(penCategory.trim().equals(Sys_Constants.CATEGORY_PENCIL)) { 6 tempPen = new Pencil(); 7 } else if(penCategory.trim().equals(Sys_Constants.CATEGORY_GEL_PEN)) { 8 tempPen = new GelPen(); 9 } 10 } 11 return tempPen; 12 } 13 }
測試:在匿名塊中進行工廠創建測試:
1 Pen pencil = PenFactory.create(Sys_Constants.CATEGORY_PENCIL); 2 if(pencil != null) { 3 System.debug(pencil.getPenName()); 4 } else { 5 System.debug('工廠創建鉛筆失敗'); 6 }
輸出結果為:Pencil.
總結:設計模式與語言無關,其他設計模式理論上也可以適用於salesforce。具體哪種模式有什么好處,請自行查看相關設計模式的圖書。
如果內容有錯誤的地方,希望大神指出,如果有問題可以留言。