设计模式学习—空对象模式(Null Object Design Pattern)
来源:互联网 发布:qq炫舞卡八音软件 编辑:程序博客网 时间:2024/06/12 14:06
一、我的理解
空对象模式类似于给某个类设置默认行为,以应对当该对象为null值时有默认操作,避免程序报错。
二、实现方式
对象的生成采用工厂模式,工厂模式内部在创建对象实例时检查参数,如果参数可用则创建对应实例对象,否则创建一个空对象类(实际上是默认类的对象实例)
三、实例
Java实例
AbstractCustomer类:抽象客户类,工厂模式中会用到
package com.study.dp.nullobject;public abstract class AbstractCustomer { protected String name; public abstract boolean isNil(); public abstract String getName(); }RealCustomer类:真实的客户类,针对实际存在的客户会有相应的动作(这里为getName函数)
package com.study.dp.nullobject;public class RealCustomer extends AbstractCustomer { public RealCustomer(String name) { this.name = name; } @Override public boolean isNil() { return false; } @Override public String getName() { return name; }}
NullCustomer类:空对象类,即如果客户不存在时生成的实例所属类
package com.study.dp.nullobject;public class NullCustomer extends AbstractCustomer { @Override public boolean isNil() { return true; } @Override public String getName() { return "Not Available in Customer Database"; }}CustomerFactory类:工厂模式,在生成实例对象时会检查客户姓名是否可用,如果不可用则返回空对象
package com.study.dp.nullobject;public class CustomerFactory { public static final String[] names = {"Rob", "Joe", "Julie"}; public static AbstractCustomer getCustomer(String name) { for(int i=0; i<names.length; i++) { if(names[i].equalsIgnoreCase(name)) { return new RealCustomer(name); } } return new NullCustomer(); }}Demo类:测试
package com.study.dp.nullobject;public class Demo { public static void main(String[] args) { AbstractCustomer customer1 = CustomerFactory.getCustomer("Rob"); AbstractCustomer customer2 = CustomerFactory.getCustomer("Bob"); AbstractCustomer customer3 = CustomerFactory.getCustomer("Julie"); AbstractCustomer customer4 = CustomerFactory.getCustomer("Laura"); System.out.println("Customers"); System.out.println(customer1.getName()); System.out.println(customer2.getName()); System.out.println(customer3.getName()); System.out.println(customer4.getName()); }}
四、应用场景
阅读全文
0 0
- 设计模式学习—空对象模式(Null Object Design Pattern)
- [翻译]空对象设计模式(Null Object Design Pattern)
- 设计模式:空对象模式(Null Object Pattern)
- 【设计模式】空对象模式(Null Object Pattern)
- Java 空对象设计模式(Null Object Pattern) 讲解
- 空对象模式(Null Object Pattern)
- Java Null Object Pattern(空对象模式)
- 被遗忘的设计模式——空对象模式(Null Object Pattern)
- 被遗忘的设计模式——空对象模式(Null Object Pattern)
- Java设计模式——空对象模式(Null Object Pattern)
- 设计模式学习—数据访问对象模式(Data Access Object Design Pattern)
- 设计模式学习—传输对象模式(Transfer Object Design Pattern)
- 设计模式之空对象(Null Object)模式
- 【设计模式 - 21】之空对象模式(Null Object)
- 设计模式学习—外观模式(Facade Design Pattern)
- 设计模式学习—适配器模式(Adapter Design Pattern)
- 设计模式学习—享元模式(Flyweight Design Pattern)
- 设计模式学习—代理模式(Proxy Design Pattern)
- Android自定义控件(特效一) 点击屏幕,根据所点击的位置绘制圆环
- 微信小程序之获取并解密用户数据(获取openId、unionId)
- pyqt下.ui文件转换为对应.py文件的知识整理
- QT的安装和实现简单动画,有源码
- 关于MySQL数据库调优的几点心得
- 设计模式学习—空对象模式(Null Object Design Pattern)
- Android自定义控件(特效二) 点击屏幕,根据所点击的位置绘制桃心
- jQuery源码学习笔记(10)
- rn笔记:(Genymotion)启动rn时,node没启动成功,导致报错unable to load script from assets'index.android.bundle'
- cocos creator 学习(五)
- android中关于点击屏幕,实现破碎的效果的实现
- Python基础之Windows下Python3.x环境搭建
- 文章标题 HDU 2222 : Keywords Search (AC自动机模板)
- Js apply()使用详解