Hello friend, I'm Ritchie.|

Ritchie里其

园龄:2年6个月粉丝:4关注:7

空对象模式

空对象模式(Null Object Pattern)

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

package com.xxx;
/**
* @Description 1.定义一个抽象类
* 空对象模式(Null Object Pattern)中,一个空对象取代 NULL 对象实例的检查。Null 对象不是检查空值,而是反应一个不做任何动作的关系。这样的 Null 对象也可以在数据不可用的时候提供默认的行为。
* 为什么使用这个模式?还需要null吗?
* 这个模式可以消除重复。如果多个地方要判空。
* 空对象模式是通过实现一个默认的无意义对象来避免null值出现, 简单地说,就是为了避免在程序中出现null值判断而诞生的一种常用设计方法.
* 另外一个好处就是方便做测试,
* * 增加了NullUser类后, 在User类中就不需要"user != null"这句话了, 因为我们提供了一个实现接口的所有方法, 不会再产生null对象. 想象一个web项目中, user对象可能由MVC框架映射产生, 我们只要定义一个默认的映射对象是NullUser, 就可以解决控制判断的问题, 提升代码的可读性. 这就是空对象模式, 非常简单, 但非常实用.
*/public abstract class AbstractUser {
protected String name;
/**
* 是否为null
* @return
*/
public abstract boolean isNil();
/**
* 获取名字
* @return
*/
public abstract String getName();
}
package com.xxx;
import com.qf.AbstractCustomer;
/**
* @Description 2.继承扩展,真实用户
*/public class RealUser extends AbstractUser {
public RealUser(String name){
this.name = name;
}
@Override
public boolean isNil() {
return false;
}
@Override
public String getName() {
return name;
}
}
package com.xxx;
import com.qf.AbstractCustomer;
/**
* @Description 3.继承扩展,空用户
*/public class NullUser extends AbstractUser {
@Override
public boolean isNil() {
return true;
}
@Override
public String getName() {
return "空";
}
}
package com.xxx;
/**
* @Description 4.创建用户工厂
*/public class UserFactory {
public static final String[] names = {"张三", "李四", "王五"};
public static AbstractUser getUser(String name){
for (int i = 0; i < names.length; i++) {
if (names[i].equalsIgnoreCase(name)) {
return new RealUser(name);
}
} return new NullUser();
}
}
package com.xxx;
/**
* @Description 5.通过名字,来获取 RealUser 或 NullUser 对象。
*/public class Test {
public static void main(String[] args) {
AbstractUser lisi = UserFactory.getUser("李四");
AbstractUser lufei = UserFactory.getUser("路飞");
System.out.println(lisi.getName());
System.out.println(lufei.getName());
}
}

本文作者:Ritchie里其

本文链接:https://www.cnblogs.com/wang-zeyu/p/17070087.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Ritchie里其  阅读(26)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
✨欢迎你~🍻
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 遥か Aimer
遥か - Aimer
00:00 / 00:00
An audio error has occurred.

作词 : aimerrhythm/田中ユウスケ

作曲 : 田中ユウスケ

编曲 : 玉井健二/百田留衣

海岸線の雨に ちらばった君の影

思い出が交差する 海辺の街

君はあの日のまま いまも夢を見てた

君はあの日のまま いまも夢を見てた

遥か記憶の空 2人照らす光

遥か記憶の空 2人照らす光

膝までの浅瀬で 見つけた星

君まで届くなんてさ ありえないような

浅い眠りの中で 深い夢から覚めて

浅い眠りの中で 深い夢から覚めて

裸足のまま駆けてく まばゆい星

君はあの日のまま どんな夢を見てた?

君はあの日のまま どんな夢を見てた?

遥か記憶の空 2人照らす光

遥か記憶の空 2人照らす光

いつまでもこうして 笑っててほしい

夜空に舞い上がる 幾千の花びら

でたらめな誓いで 生きてく日々

君から届くなんてさ ありえないような