简要说明:
oracledataoperate、sqlserverdataoperate、mysqldataoperate,分别代表oracle、sqlserver、mysql这三种数据库的操作类。继承自abstractdataoperate
abstractdataoperate是一个抽象类,包含了那些不同种类数据库都是一样代码的操作方法。继承自dataoperate
dataoperate是上面说的数据操作类的统一接口,只有两个方法:取得一条记录、插入一条记录。
dataoperatefactory是一个工厂方法,统一用它的方法来得到数据库操作类的实例。
sampleclass是我们系统的某个功能模块的类。
people是一个实体类,代表一条记录。三个字段 oid唯一标识符、name姓名、date生日。
详细说明:
1、所有系统功能模块类只认dataoperat这个接口还不必管具体的实现类是oracledataoperate还sqlserverdataoperate。dataoperate源代码如下:
public interface dataoperate {
//根据记录的唯一标识取出一条记录
people getpeople(string oid);
//插入一条记录
boolean insertpeople(people people);
}
2、abstractdataoperate、oracledataoperate、sqlserverdataoperate、mysqldataoperate都是继承dataoperate接口的,没什么好说的,省略。
3、dataoperatefactory。我们看看工厂方法怎么写的。
public class dataoperatefactory {
public static final int oracle = 0; //定义三个表示数据库类型的常量
public static final int mysql = 1;
public static final int sqlserver = 2;
private static dataoperate db;
private static int datatype = mysql;
/**
* 根据数据库类型(datatype)取得一个数据库操作类的实例,
* 这里对dataoperate使用了单例模式,因为oraceldataoperate等都是无状态的工具类,
* 所以整个系统只保留一个实例就行了。
*
* @return 返回的是接口,客户端不必关心具体是用那个实现类
*/
public static dataoperate getinstance() {
if (db == null) {
if (datatype == oracle) //根据datetype返回相应的实现类
return new oraceldataoperate();
if (datatype == mysql)
return new mysqldataoperate();
if (datatype == sqlserver)
return new sqlserverdataoperate();
}
return db;
}
}
4、接下来就看看使用端是如何调用工厂方法和使用数据操作类的。
/**
* 系统某个功能类
*/
public class sampleclass {
private dataoperate db; //声明一个数据库操作类,注意这里用的是接口噢
/**某方法*/
public void samplemethod() {
db = dataoperatefactory.getinstance();//得到单一实例
people p = db.getpeople("123"); //取得一条记录
db.insertpeople(p);//再插回去
}
}
我们发现sampleclass中根本没有出现oraceldataoperate、mysqldataoperate等的影子,这就是接口的威力。客户端不必针对oraceldataoperate等写不同的代码,它只关心dataoperate即可,具体要取那个类的逻辑就由dataoperatefactory负责了。
总结:
从例子中我们可以看到什么是面向接口的编程方式。sampleclass使用数据操作类可以不必关心具体是那个类,只要是符合接口的都行
要实例?只须调用dataoperatefactory.getinstance()即可,其它的交于dataoperatefactory这个工厂来做吧,使用端什么都不用关心。
我们要支持新的数据库类型,只须要象oraceldataoperate那样,再写一个继承abstractdataoperate的类即可,比如sysbasedataoperate。然后到dataoperatefactory中加入相应代码即可。
如果我们想要可配置性更高,可以用private static int datatype = mysql;中的值设置到一个文本文件中。
对于开发支持多种数据库的系统,强烈建议使用hibernate,我现在做的系统就是用hibernate的,开发时用mysql,到要给客户时将数据库换了db2,程序不用做任何改动,真正的无逢移植。不过这样,本文所提到的方法就没什么用了.
分享到:
相关推荐
这里我们将深入探讨三种常见的Java设计模式:单例(Singleton)、工厂方法(Factory Method)和抽象工厂(Abstract Factory)。 **单例模式(Singleton)** 单例模式确保一个类只有一个实例,并提供一个全局访问点...
SetupFactory是一款功能强大的安装制作工具,它主要用于创建Windows平台下的应用程序安装程序。这款软件以其简单易用、灵活性高和自定义能力强而广受开发者欢迎。"setupfactory9.zip"是SetupFactory的第9个版本的...
Setup Factory 9.01汉化补丁是针对该软件版本的一个关键更新,旨在为用户提供中文界面,方便中国用户理解和操作。Setup Factory是一款强大的安装制作工具,它允许开发者创建专业级别的Windows安装程序,无需深入学习...
《Factory IO:虚拟工厂调试仿真的利器》 Factory IO,这款源自欧洲的软件,被誉为工业自动化领域的瑰宝,尤其在PLC(可编程逻辑控制器)的学习和调试领域中独树一帜。它为用户提供了真实工厂环境的模拟,无论你是...
**Knoll Light Factory** 是一款在视觉特效和后期制作领域广泛应用的高级光线效果插件,尤其在Adobe After Effects(简称AE)中深受专业设计师和艺术家的喜爱。这款插件由John Knoll开发,他是《星球大战》系列电影...
**VB打包利器Setup Factory 7.0详解** 在软件开发领域,尤其是Visual Basic 6.0(VB6.0)的开发过程中,将程序打包成易于分发和安装的安装包是至关重要的步骤。Setup Factory 7.0就是这样一个专为VB6.0设计的强大...
SetupFactory是一款功能强大的安装制作工具,它允许用户创建专业级别的安装程序,用于部署软件到Windows操作系统上。这个“安装制作SetupFactory7.0.rar”压缩包包含的是SetupFactory的7.0版本,它是一个绿色版,...
Setup Factory是一款强大的安装程序制作工具,专为开发者和企业设计,用于创建专业级的Windows安装包。这款软件基于JAVA技术,使得它具有跨平台的能力,同时也保持了与Windows操作系统的高度兼容性。在本文中,我们...
`PS Tray Factory` 是一款系统托盘图标管理工具,它的主要功能是帮助用户管理和优化Windows操作系统中的任务栏通知区域(系统托盘)的图标。这个软件允许用户将不常使用的程序图标隐藏起来,以保持桌面环境的整洁和...
SetupFactory是一款功能强大的安装程序制作工具,主要用于帮助开发者创建专业级别的Windows安装包。这款软件以其易用性和灵活性著称,适合个人开发者以及企业级应用的部署。SetupFactory 7.0是该系列的一个版本,...
SetupFactory是一款专业的安装制作工具,主要用于创建Windows平台下的应用程序安装程序。这个汉化补丁包是针对SetupFactory 9.0.3.0版本的,它使得非英语用户能够更方便地理解和使用这款软件,无需面对英文界面的...
### Setup Factory 安装前静默卸载知识点详解 #### 一、Setup Factory 简介 Setup Factory 是一款功能强大的软件安装制作工具,能够帮助开发者轻松创建专业的安装程序。它支持各种定制化的安装选项,包括但不限于...
PS Tray Factory is a powerful and handy tool meant to flexibly control ALL the other icons in the system tray of the taskbar. PS Tray Factory will help you to manage all the applications that place ...
"Factory IO 电梯模型"是基于Factory IO软件的一个模拟案例,该软件主要用于工业自动化和流程控制系统的教学与设计。在Factory IO中,用户可以创建、模拟和测试各种工厂自动化环境,提升理解和操作技能。电梯模型...
《Factory.IO与西门子博途V16的仿真控制集成详解》 在现代工业自动化领域,模拟仿真已经成为设计和测试控制系统的重要手段。本资源集合是关于“Factory.IO工厂结合西门子博途V16”的一个综合实例,旨在帮助学习者...
Setup Factory 是一款强大的安装程序制作工具,尤其适合那些不熟悉安装程序制作的用户。通过其提供的向导式界面,用户可以轻松创建具有专业外观和功能的安装包。本教程将详细讲解如何使用 Setup Factory 7.0 创建...
标题“Smart Print factory.printing”暗示我们关注的主题是关于智能打印技术在工厂环境中的应用,可能涉及自动化、高效能的打印解决方案。描述部分的字符串看似随机,无法提供具体信息,因此我们将主要依据标签...
SetupFactory_winform安装包打包流程 SetupFactory是一款功能强大且易于使用的安装包制作工具,广泛应用于Windows平台的软件安装包制作中。下面将对SetupFactory打包winform流程进行详细的介绍。 Step 1: 设置...
《AE插件 灯光工厂 Knoll Light Factory深度解析》 在数字视觉艺术的世界里,Adobe After Effects(AE)是一款强大的后期制作软件,而Knoll Light Factory则是AE中的一个不可或缺的灯光效果插件,它为创作者提供了...
Factory IO则是一款功能丰富的工厂模拟软件,可以帮助工程师在虚拟环境中测试和验证自动化系统的性能。下面将详细探讨这些知识点: 1. **三菱PLC**:三菱PLC是工业自动化领域的核心设备,主要负责接收来自传感器和...