Null Pattern

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程式片段在整體架構,逐漸擴散...

老E隨手寫