空对象模式和扩展方法的NULL验证

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//空对象模式和扩展方法的NULL验证
namespace Chap2_3
{
public class NULLObject
{
public void Test()
{
Promation promation = PromationFactory.Create("水果促销");
Promation promation1 = PromationFactory.Create(null);
if (promation.IsNullOrEmpty())
{
//扩展方法,判断为NULL
Console.WriteLine("promation是NULL");
}
else
{
Console.WriteLine("promation不是NULL");
}
if (promation.IsNull)
{
Console.WriteLine("promation是NULL");
}
else
{
Console.WriteLine("promation不是NULL");
}
if (promation1.IsNull)
{
Console.WriteLine("promation1是NULL");
}
else
{
Console.WriteLine("promation1不是NULL");
}
Console.ReadKey();
}

}
public class Promation
{
public virtual bool IsNull
{
get { return false; }
}
}
public class NullPromation : Promation
{
public override bool IsNull
{
get { return true; }
}
}
public class PromationFactory
{
public static Promation Create(string promationName)
{
if (string.IsNullOrEmpty(promationName))
{
return new NullPromation();
}
else
{
return new Promation();
}
}

}
//扩展方法
public static class ObjectIsNUllOrEmpty
{
public static bool IsNullOrEmpty(this object obj)
{
return obj == null ? true : false;
}
}
}

时间: 2024-08-07 15:35:10

空对象模式和扩展方法的NULL验证的相关文章

空对象模式(Null Object Pattern)

空对象模式:用一个空对象来取代null实例的检查,空对象实现一个不做任何动作的关系.(消除如if(Object == null) 这样的检查null实例代码) 例子: public abstract class Duck { public String name; public abstract void getName(); } public class ConcreteDuck extends Duck { public ConcreteDuck(String name) { this.na

被遗忘的设计模式——空对象模式(Null Object Pattern)

GoF(四人帮)那本<设计模式 可复用面向对象软件的基础>可谓是设计模式方面的经典之作,其中介绍的23种设计模式, 也可谓是经典中的经典.但是,设计模式的种类绝不仅仅是这23种,除此之外还有很多巧妙可爱的设计模式值得我们学习.这些 被遗忘的设计模式,也可以堪称经典之作.今天我们来一起学习被遗忘的设计模式--空对象模式(Null Object Pattern). 一起看看这个模式会带给我们怎样的惊喜? 一.Pattern name Provide an object as a surrogate

C# 设计模式之空对象模式

最近看了不少的书籍和视频等相关资料,决定自己边学习边写一下个人对设计模式的理解,如果有不对的请大家多多指正. 今天先说说我个人觉得最简单的设计模式 -- [空对象模式] 空对象模式可以减少客户端对对象判断是否为空的重复操作,也可以减少异常发生的情况[如果客户端调用程序忘记了检查对象是否为空,而直接访问对象中的数据,则有可能会报出异常,影响程序运行]. 废话不说了,先上我写的代码,下面是未运用空对象模式之前的示例代码: 要返回的实体代码,Person.cs: namespace NullObjec

【设计模式】空对象模式

在空对象模式(Null Object Pattern)中,一个空对象取代 NULL 对象实例的检查.Null 对象不是检查空值,而是反应一个不做任何动作的关系.这样的 Null 对象也可以在数据不可用的时候提供默认的行为. 在空对象模式中,我们创建一个指定各种要执行的操作的抽象类和扩展该类的实体类,还创建一个未对该类做任何实现的空对象类,该空对象类将无缝地使用在需要检查空值的地方. 实现 我们将创建一个定义操作(在这里,是客户的名称)的 AbstractCustomer 抽象类,和扩展了 Abs

07_空对象模式

空对象模式 空对象模式(Null Object Pattern)是通过实现一个默认无意义的对象来避免null值得出现,简单的说,就是为了避免在程序中出现null值判断而诞生的一种常用的设计方法. 空对象模式的例子 我们写一个听动物声音的模拟程序,代码如下: 定义动物接口 package cn.african.nullObjectPattern; public interface Animal { public void makeSound(); } 定义小狗 package cn.african

设计模式之空对象模式(php实现)

github地址:https://github.com/ZQCard/design_pattern /** * 在空对象模式(Null Object Pattern)中,一个空对象取代 NULL 对象实例的检查. * Null 对象不是检查空值,而是反应一个不做任何动作的关系.这样的 Null 对象也可以在数据不可用的时候提供默认的行为. * 在空对象模式中,我们创建一个指定各种要执行的操作的抽象类和扩展该类的实体类,还创建一个未对该类做任何实现的空对象类,该空对象类将无缝地使用在需要检查空值的

Java进阶篇设计模式之十三 ---- 观察者模式和空对象模式

前言 在上一篇中我们学习了行为型模式的备忘录模式(Memento Pattern)和状态模式(Memento Pattern).本篇则来学习下行为型模式的最后两个模式,观察者模式(Observer Pattern)和空对象模式模式(NullObject Pattern). 观察者模式 简介 观察者模式又叫发布-订阅(Publish/Subscribe)模式.模型-视图(Model/View)模式.源-监听器(Source/Listener)模式或从属者(Dependents)模式.观察者模式定义

设计模式之空对象模式

空对象模式 空对象模式是通过实现一个默认的无意义对象来避免null值出现, 简单地说,就是为了避免在程序中出现null值判断而诞生的一种常用设计方法. 举个简单的例子, 一个听动物叫声的模拟程序: 动物代码: 听叫声的人: 现在我们想, 能不能把 animal 的空值判断去掉呢?我们增加一个 NullAnimal 类: 增加了NullAnimal类后, 在Person类中就不需要"animal != null"这句话了, 因为我们提供了一个实现接口的所有方法, 不会再产生null对象.

设计模式系列 - 空对象模式

空对象模式取代简单的 NULL 值判断,将空值检查作为一种不做任何事情的行为. 介绍 在空对象模式中,我们创建一个指定各种要执行的操作的抽象类和扩展该类的实体类,还创建一个未对该类做任何实现的空对象类,该空对象类将无缝地使用在需要检查空值的地方. 类图描述 代码实现 1.定义抽象类 public abstract class AbstractCustomer { protected string Name; public abstract bool IsNil(); public abstrac