一、概念
- 空对象设计模式就是对不存在的对象的一个检查,是个默认为。
- 目的
- 为了解决系统出现异常导致系统停止运行。
二、实现
- 条件
- java
- 场景
- 以切换数据库连接地址为场景。
- 实现
- 数据库抽象类,类名:AbstractDataBase
package com.NullObject; public abstract class AbstractDataBase { protected String Name; public void GetUrl() { } } - MySql数据库类,类名:MySQLDataBase
package com.NullObject; public class MySQLDataBase extends AbstractDataBase { public MySQLDataBase(String _Name) { Name = _Name; } @Override public void GetUrl() { System.out.print(Name+":数据库URL!"); } } - Oracle数据库类,类名:OracleDataBase
package com.NullObject; public class OracleDataBase extends AbstractDataBase { public OracleDataBase(String _Name) { Name = _Name; } @Override public void GetUrl() { System.out.print(Name+":数据库URL!"); } } - SqlServer数据库类,类名:SqlServerDataBase
package com.NullObject; public class SqlServerDataBase extends AbstractDataBase { public SqlServerDataBase(String _Name) { Name = _Name; } @Override public void GetUrl() { System.out.print(Name+":数据库URL!"); } } - 工厂类,类名:DataBaseFactory
package com.NullObject; public class DataBaseFactory { private static String[] array = new String[]{"MySQL","Oracle","SqlServer"}; public static AbstractDataBase getObject(String typ) { if (typ.equals(array[0])) { return new MySQLDataBase(typ); } else if (typ.equals(array[1])) { return new OracleDataBase(typ); } else if (typ.equals(array[2])) { return new SqlServerDataBase(typ); } return new NullDataBase(typ); } } - 入口类,类名:Main
package com; import com.NullObject.AbstractDataBase; import com.NullObject.DataBaseFactory; public class Main { public static void main(String[] args) { AbstractDataBase dataBase = DataBaseFactory.getObject("Oracle"); dataBase.GetUrl(); } }
- 数据库抽象类,类名:AbstractDataBase
三、优缺点
- 优点
- 可以检查是不存在的对象,避免出现异常,导致系统停止运行。
- 缺点
- 模式使用时应谨慎。因为它可以使错误显示为正常程序执行。
本文介绍了空对象设计模式的概念和实现,通过一个数据库连接切换的场景展示了如何使用该模式。当请求的数据库类型不存在时,返回一个空对象,避免因异常导致系统停止运行。该模式能有效检查并处理不存在的对象,但使用时需谨慎,以免错误被视为正常执行。

被折叠的 条评论
为什么被折叠?



