Design Pattern
NULL Pattern
最近在看一些相依性注入的電子書,或是其他模式的書裡面,都
會提到這個Pattern,實際案例中滿常遇到這個NULL判斷的問題。
定義:空物件模式是通過實現一個預設的無意義物件來避免null值出現,簡單的說,
就是為了避免在程式中出現null值判斷而誕生的一種常用設計方法。
案例如下:
class ProductService
{
public Product GetSingleProduct(string id)
{
Product product = null;
switch (id)
{
case "1":
product = new Product() { Id = "1", ProductName = "AAA" };
break;
case "2":
product = new Product() { Id = "2", ProductName = "BBB" };
break;
default:
product = null;
break;
}
return product;
}
}
class Product
{
public string Id { get; set; }
public string ProductName { get; set; }
}
這種問題很常出現,在撈取DB的時候class為null或是class中的屬性null狀況,改成如下
class ProductService
{
public Product GetSingleProduct(string id)
{
Product product = null;
switch (id)
{
case "1":
product = new Product() { Id = "1", ProductName = "AAA" };
break;
case "2":
product = new Product() { Id = "2", ProductName = "BBB" };
break;
default:
product = NullProduct.NotFound;
break;
}
return product;
}
}
class Product
{
public string Id { get; set; }
public string ProductName { get; set; }
}
class NullProduct
{
public static Product NotFound => new Product();
}
透過這樣的方式,可以盡可能減少判斷nul的撰寫,避免在判斷null程式片段在整體架構,逐漸擴散...
元哥的筆記