一、产生背景

在空对象模式(Null Object Pattern)中,一个空对象取代 NULL 对象实例的检查。Null 对象不是检查空值,而是反应一个不做任何动作的关系。这样的 Null 对象也可以在数据不可用的时候提供默认的行为。

在空对象模式中,我们创建一个指定各种要执行的操作的抽象类和扩展该类的实体类,还创建一个未对该类做任何实现的空对象类,该空对象类将无缝地使用在需要检查空值的地方。

二、实现方式

引入一个特殊处理的对象

三、代码实现

public class Others : IBall
{public void Play(){Console.WriteLine("您选择的球类项目目前还不存在~~");}
}class Program
{static void Main(string[] args){IBall ball = null;SportsMan man = new SportsMan();while (true){Console.WriteLine("选择你喜欢的球类项目(1=足球, 2=篮球,3=排球)");string input = Console.ReadLine();switch (input){case "1":ball = new Football();break;case "2":ball = new Basketball();break;case "3":ball = new Volleyball();break;default:ball = new Others();break;}man.SetHobby(ball);man.StartPlay();}}
}

四、模式分析

没啥缺点

转载于:https://www.cnblogs.com/xietianjiao/p/8745174.html

设计模式のNullObjectPattern(空对象模式)----行为模式相关推荐

  1. php7 空对象,PHP设计模式之空对象模式(Null Object)代码实例大全(26)

    目的 空对象模式不属于 GoF 设计模式,但是它作为一种经常出现的套路足以被视为设计模式.它具有如下优点: 客户端代码简单 可以减少报空指针异常的几率 测试用例不需要考虑太多条件 返回一个对象或 nu ...

  2. 设计模式之空对象模式

    空对象模式 空对象模式是通过实现一个默认的无意义对象来避免null值出现, 简单地说,就是为了避免在程序中出现null值判断而诞生的一种常用设计方法. 举个简单的例子, 一个听动物叫声的模拟程序: 动 ...

  3. 设计模式笔记二十二:空对象模式

    原文:http://www.runoob.com/design-pattern/ 少许个人理解,如有错误请指出.欢迎一起讨论. 在空对象模式(Null Object Pattern)中,一个空对象取代 ...

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

    前言 在上一篇中我们学习了行为型模式的备忘录模式(Memento Pattern)和状态模式(Memento Pattern).本篇则来学习下行为型模式的最后两个模式,观察者模式(Observer P ...

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

    简介 观察者模式又叫发布-订阅(Publish/Subscribe)模式.模型-视图(Model/View)模式.源-监听器(Source/Listener)模式或从属者(Dependents)模式. ...

  6. java观察者模式异步notify_Java进阶篇设计模式之十三 ---- 观察者模式和空对象模式...

    前言 在上一篇中我们学习了行为型模式的备忘录模式(Memento Pattern)和状态模式(Memento Pattern).本篇则来学习下行为型模式的最后两个模式,观察者模式(Observer P ...

  7. 被遗忘的设计模式——空对象模式(转载)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qiumengchen12/articl ...

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

    一.Pattern name Provide an object as a surrogate for the lack of an object of a given type. The Null ...

  9. 2018.3.31 设计模式之生成器模式详解及例子(对象创建型模式)

    设计模式之生成器模式(对象创建型模式) 1.定义/概念 将一个复杂对象的创建和它的表示分离,使得同样的创建过程可以有不同的表示. 2.生成模式角色 Builder: 生成器接口,定义创建一个Produ ...

最新文章

  1. 利用epoll写一个迷你的网络事件库
  2. 【MM模块】Vendor Consignment 供应商寄售
  3. nginx真的存在文件类型解析漏洞吗?
  4. SVM分类算法的基本理论问题
  5. Oracle中split功能的实现
  6. Android Studio链接外部手机模拟器问题
  7. 计算机蓝屏原因原理,蓝屏炸弹
  8. 基于MATLAB的有源三相滤波器的设计,基于MATLAB的有源滤波器的设计与仿真
  9. 考研二战上岸985的经验教训分享
  10. 消除设计教室中的白人至上主义我与设计大师cheryl d miller的对话
  11. 微信小程序一星期入门-完结篇--电影详情页的制作
  12. 3、集成逻辑门电路的功能和参数调试
  13. 使用 HTML、CSS 和 JavaScript 的简单模拟时钟
  14. 我的AI转型之路与AI之我见
  15. 【024】Vue+Springboot+mysql员工考勤管理系统(多角色登录、请假、打卡)(含源码、数据库、运行教程、实验报告)
  16. 大白话解析Context中的cancelCtx
  17. xrandr调节屏幕亮度 linux
  18. Tailwind Border
  19. WebSocket+SockJs+STMOP
  20. SQL Server死锁问题:事务(进程 ID x)与另一个进程被死锁在 锁 | 通信缓冲区资源上并且已被选作死锁牺牲品。请重新运行该事务。

热门文章

  1. 【转】在SQL Server中创建用户角色及授权(使用SQL语句)
  2. Android 怎样查看系统的memory swap 资讯/信息
  3. salesforce 零基础学习(六十二)获取sObject中类型为Picklist的field values(含record type)...
  4. Validation of XML with XSD
  5. c#文本框只能填入数字和字母
  6. 09 | 基础篇:怎么理解Linux软中断?
  7. _Ansible批量管理与维护
  8. 光栅衍射主极大个数_大学物理——光的干涉和衍射(二)
  9. 与数学实验第二版艾冬梅_吉林省实验繁荣新初一师资大起底,快来看看娃的老师长啥样?...
  10. python链表怎么定义_python:链表定义以及实现