一、概念
- 空对象设计模式就是对不存在的对象的一个检查,是个默认为。
- 目的
- 为了解决系统出现异常导致系统停止运行。
二、实现
- 条件
- 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
三、优缺点
- 优点
- 可以检查是不存在的对象,避免出现异常,导致系统停止运行。
- 缺点
- 模式使用时应谨慎。因为它可以使错误显示为正常程序执行。