设计模式のNullObjectPattern(空对象模式)----行为模式
一、产生背景
在空对象模式(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(空对象模式)----行为模式相关推荐
- php7 空对象,PHP设计模式之空对象模式(Null Object)代码实例大全(26)
目的 空对象模式不属于 GoF 设计模式,但是它作为一种经常出现的套路足以被视为设计模式.它具有如下优点: 客户端代码简单 可以减少报空指针异常的几率 测试用例不需要考虑太多条件 返回一个对象或 nu ...
- 设计模式之空对象模式
空对象模式 空对象模式是通过实现一个默认的无意义对象来避免null值出现, 简单地说,就是为了避免在程序中出现null值判断而诞生的一种常用设计方法. 举个简单的例子, 一个听动物叫声的模拟程序: 动 ...
- 设计模式笔记二十二:空对象模式
原文:http://www.runoob.com/design-pattern/ 少许个人理解,如有错误请指出.欢迎一起讨论. 在空对象模式(Null Object Pattern)中,一个空对象取代 ...
- Java进阶篇设计模式之十三 ---- 观察者模式和空对象模式
前言 在上一篇中我们学习了行为型模式的备忘录模式(Memento Pattern)和状态模式(Memento Pattern).本篇则来学习下行为型模式的最后两个模式,观察者模式(Observer P ...
- Java进阶篇设计模式之十三——观察者模式和空对象模式
简介 观察者模式又叫发布-订阅(Publish/Subscribe)模式.模型-视图(Model/View)模式.源-监听器(Source/Listener)模式或从属者(Dependents)模式. ...
- java观察者模式异步notify_Java进阶篇设计模式之十三 ---- 观察者模式和空对象模式...
前言 在上一篇中我们学习了行为型模式的备忘录模式(Memento Pattern)和状态模式(Memento Pattern).本篇则来学习下行为型模式的最后两个模式,观察者模式(Observer P ...
- 被遗忘的设计模式——空对象模式(转载)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qiumengchen12/articl ...
- 被遗忘的设计模式——空对象模式(Null Object Pattern)
一.Pattern name Provide an object as a surrogate for the lack of an object of a given type. The Null ...
- 2018.3.31 设计模式之生成器模式详解及例子(对象创建型模式)
设计模式之生成器模式(对象创建型模式) 1.定义/概念 将一个复杂对象的创建和它的表示分离,使得同样的创建过程可以有不同的表示. 2.生成模式角色 Builder: 生成器接口,定义创建一个Produ ...
最新文章
- 利用epoll写一个迷你的网络事件库
- 【MM模块】Vendor Consignment 供应商寄售
- nginx真的存在文件类型解析漏洞吗?
- SVM分类算法的基本理论问题
- Oracle中split功能的实现
- Android Studio链接外部手机模拟器问题
- 计算机蓝屏原因原理,蓝屏炸弹
- 基于MATLAB的有源三相滤波器的设计,基于MATLAB的有源滤波器的设计与仿真
- 考研二战上岸985的经验教训分享
- 消除设计教室中的白人至上主义我与设计大师cheryl d miller的对话
- 微信小程序一星期入门-完结篇--电影详情页的制作
- 3、集成逻辑门电路的功能和参数调试
- 使用 HTML、CSS 和 JavaScript 的简单模拟时钟
- 我的AI转型之路与AI之我见
- 【024】Vue+Springboot+mysql员工考勤管理系统(多角色登录、请假、打卡)(含源码、数据库、运行教程、实验报告)
- 大白话解析Context中的cancelCtx
- xrandr调节屏幕亮度 linux
- Tailwind Border
- WebSocket+SockJs+STMOP
- SQL Server死锁问题:事务(进程 ID x)与另一个进程被死锁在 锁 | 通信缓冲区资源上并且已被选作死锁牺牲品。请重新运行该事务。
热门文章
- 【转】在SQL Server中创建用户角色及授权(使用SQL语句)
- Android 怎样查看系统的memory swap 资讯/信息
- salesforce 零基础学习(六十二)获取sObject中类型为Picklist的field values(含record type)...
- Validation of XML with XSD
- c#文本框只能填入数字和字母
- 09 | 基础篇:怎么理解Linux软中断?
- _Ansible批量管理与维护
- 光栅衍射主极大个数_大学物理——光的干涉和衍射(二)
- 与数学实验第二版艾冬梅_吉林省实验繁荣新初一师资大起底,快来看看娃的老师长啥样?...
- python链表怎么定义_python:链表定义以及实现