設計模式系列(圖文解析,附帶原始碼)- 空物件
空物件(Null)
Intent
使用什麼都不做
的空物件來代替 NULL。
一個方法返回 NULL,意味著方法的呼叫端需要去檢查返回值是否是 NULL,這麼做會導致非常多的冗餘的檢查程式碼。並且如果某一個呼叫端忘記了做這個檢查返回值,而直接使用返回的物件,那麼就有可能丟擲空指標異常。
Class Diagram
Implementation
public abstract class AbstractOperation {
abstract void request();
}
public class RealOperation extends AbstractOperation {
@Override
void request() {
System.out.println("do something");
}
}
public class NullOperation extends AbstractOperation{
@Override
void request() {
// do nothing
}
}
public class Client {
public static void main(String[] args) {
AbstractOperation abstractOperation = func(-1);
abstractOperation.request();
}
public static AbstractOperation func(int para) {
if (para < 0) {
return new NullOperation();
}
return new RealOperation();
}
}
相關文章
- 設計模式系列(圖文解析,附帶原始碼) - 命令設計模式原始碼
- 設計模式系列(圖文解析,附帶原始碼) - 模板方法設計模式原始碼
- 設計模式系列(圖文解析,附帶原始碼) - 生成器設計模式原始碼
- 設計模式系列(圖文解析,附帶原始碼) - 介面卡設計模式原始碼
- 極簡設計模式-空物件模式設計模式物件
- GoLang設計模式12 - 空物件模式Golang設計模式物件
- 【趣味設計模式系列】之【代理模式3--Cglib動態代理原始碼解析】設計模式CGLib原始碼
- 【趣味設計模式系列】之【代理模式2--JDK動態代理原始碼解析】設計模式JDK原始碼
- Gson原始碼解析和它的設計模式原始碼設計模式
- 設計模式(十)——組合模式(HashMap原始碼解析)設計模式HashMap原始碼
- 物件導向設計的設計模式(一):建立型模式(附 Demo & UML類圖)物件設計模式
- 物件導向設計的設計模式(三):行為型模式(附 Demo & UML類圖)物件設計模式
- 物件導向設計的設計模式(二):結構型模式(附 Demo & UML類圖)物件設計模式
- JavaScript設計模式系列二之建造者模式(附案例原始碼)JavaScript設計模式原始碼
- 設計模式之釋出訂閱模式(5) Spring Events原始碼解析設計模式Spring原始碼
- 一文掌握介面卡設計模式,UML圖解原始碼簡單易懂設計模式圖解原始碼
- Android原始碼設計模式-模板模式Android原始碼設計模式
- 空物件模式物件模式
- 軟體設計模式白話文系列(十四)策略模式設計模式
- Dubbo架構設計與原始碼解析(三)責任鏈模式架構原始碼模式
- Android原始碼設計模式-中介者模式Android原始碼設計模式
- Handler系列原始碼解析原始碼
- 一文帶你摸清設計模式之單例模式!設計模式單例
- 【圖解設計模式系列】The Command Pattern: 命令列模式圖解設計模式命令列
- Java進階篇設計模式之十三 ---- 觀察者模式和空物件模式Java設計模式物件
- 圖文詳解23種設計模式設計模式
- 【趣味設計模式系列】之【代理模式4--ASM框架解析】設計模式ASM框架
- 原始碼中的設計模式--工廠模式原始碼設計模式
- 原始碼中的設計模式--模板方法模式原始碼設計模式
- 設計模式(十四)——模板模式(SpringIOC原始碼分析)設計模式Spring原始碼
- 【圖解設計模式系列】23句話總結23種設計模式圖解設計模式
- AFNetworking原始碼解析系列(1)原始碼
- AFNetworking原始碼解析系列(2)原始碼
- 設計模式系列設計模式
- 設計模式系列之代理模式(Proxy Pattern)——物件的間接訪問設計模式物件
- Android 原始碼設計模式解析與實戰 讀書筆記 5 工廠方法模式Android原始碼設計模式筆記
- 原始碼中的設計模式--裝飾器模式原始碼設計模式
- HashMap原始碼解析和設計解讀HashMap原始碼