有時候咱們的代碼中爲避免 NullPointerException 會出現不少的對Null的判斷語句,而這些語句一旦多起來,咱們的代碼就會變的慘不忍睹,所以咱們引入了空對象模式(Null Object Pattern)以此來使咱們的代碼變的更優雅一點.設計模式
第一步:建立一個抽象基類,代碼以下ide
package com.test; /** * 這是抽象基類 * @author 歐陽飄 */ public abstract class AbstractCustomer { protected String name; public abstract boolean isNil(); public abstract String getName(); } |
第二部:建立擴展上述類的具體類,其代碼以下this
package com.test; /** |
第三部:建立一個CustomerFactory
類,其代碼以下設計
/** * * @author 歐陽飄 * 建立客戶的工廠類:若是客戶名稱能夠查詢出來,那麼就返回真實的對象,若是不存在那麼就返回空客戶對象 */ public class CustomerFactory { public static final String[] customNames = {"jack", "ouyang", "LaLa"}; public static AbstractCustomer getCustomer(String name){ for (int i = 0; i < customNames.length; i++) { if (customNames[i].equalsIgnoreCase(name)){ return new RealCustomer(name); } } return new NullCustomer(); } } |
第四部:建立演示Demo程序,運行結果以下圖所示指針
經過上述咱們得出空對象設計模式類圖以下:code
空對象設計模式的優勢:對象
(1)它能夠增強系統的穩固性,能有有效地防止空指針報錯對整個系統的影響,使系統更加穩定。
(2)它可以實現對空對象狀況的定製化的控制,可以掌握處理空對象的主動權。
(3)它並不依靠Client來保證整個系統的穩定運行。
(4)它經過isNull對==null的替換,顯得更加優雅,更加易懂。ci