`

java设计模式(3)--工厂模式及其实例

    博客分类:
  • java
阅读更多

一.工厂模式,以数据库的业务逻辑为简单例子,里面有很多不合理的地方,目的是为了阐述对工厂模式的理解。

1.声明接口BaseDAO

/**
 **<p>工厂接口</p>
 **作者:   
 **Blong:http://www.blogjava.net/1504
 **E-mail:yyk1504@163.com
 **QQ:251218333
 **<p>2008-12-16 下午02:08:15</p>
*/
package cn.com.model.factory;

import java.sql.Connection;

public interface BaseDAO
{
    /**数据库的插入方法*/
    public void save(); 
    /**数据库的更新方法*/
    public void update();
    /**数据库的删除方法*/
    public void delete();
}

2.MYSQL具体实现MysqlDAO

*<p>Mysql数据库实现业务逻辑类</p>
 *作者:   
 *Blong:http://www.blogjava.net/1504
 *E-mail:yyk1504@163.com
 *QQ:251218333
 *<p>2008 2008-12-16 </p>
*/
package cn.com.model.factory;

import java.sql.Connection;
import java.sql.DriverManager;

public class MysqlDAO implements BaseDAO
{

    public void delete()
    {
        /**
         *<p>此方法的功能介绍</p>
         *delete
         *MysqlDao
         *
         *Author:ASUS_1
         <p>2008 2008-12-16 下午02:16:27</p>
        */
        System.out.println("Mysql在此处实现删除....");
    }

    public void save()
    {
        /**
         *<p>此方法的功能介绍</p>
         *save
         *MysqlDao
         *
         *Author:ASUS_1
         <p>2008 2008-12-16 下午02:16:27</p>
        */
        System.out.println("Mysql在此处实现保存....");
    }

    public void update()
    {
        /**
         *<p>此方法的功能介绍</p>
         *update
         *MysqlDao
         *
         *Author:ASUS_1
         <p>2008 2008-12-16 下午02:16:27</p>
        */
        System.out.println("Mysql在此处实现更新....");
    }

   
}

3.SQL2000具体实现类

/**
 *<p>MsSql2000数据库实现业务逻辑类</p>
 *作者:   
 *Blong:http://www.blogjava.net/1504
 *E-mail:yyk1504@163.com
 *QQ:251218333
 *<p>2008 2008-12-16 </p>
*/
package cn.com.model.factory;

import java.sql.Connection;
import java.sql.DriverManager;

public class MsSql2000DAO implements BaseDAO
{

    public void delete()
    {
        /**
         *<p>此方法的功能介绍</p>
         *delete
         *MsSql2000DAO
         *
         *Author:ASUS_1
         <p>2008 2008-12-16 下午02:21:04</p>
        */
        System.out.println("MsSql2000在此处实现删除....");
    }

    public void save()
    {
        /**
         *<p>此方法的功能介绍</p>
         *save
         *MsSql2000DAO
         *
         *Author:ASUS_1
         <p>2008 2008-12-16 下午02:21:04</p>
        */
        System.out.println("MsSql2000在此处实现保存....");
    }

    public void update()
    {
        /**
         *<p>此方法的功能介绍</p>
         *update
         *MsSql2000DAO
         *
         *Author:ASUS_1
         <p>2008 2008-12-16 下午02:21:04</p>
        */
        System.out.println("MsSql2000在此处实现更新....");
    }

    }

4.SQL2005具体实现类

/**
 *<p>MsSql2005数据库实现业务逻辑类</p>
 *作者:   
 *Blong:http://www.blogjava.net/1504
 *E-mail:yyk1504@163.com
 *QQ:251218333
 *<p>2008 2008-12-16 </p>
*/
package cn.com.model.factory;

import java.sql.Connection;
import java.sql.DriverManager;

public class MsSql2005DAO implements BaseDAO
{

    public void delete()
    {
        /**
         *<p>此方法的功能介绍</p>
         *delete
         *MsSql2005DAO
         *
         *Author:ASUS_1
         <p>2008 2008-12-16 下午02:23:38</p>
        */
        System.out.println("MsSql2005在此处实现删除....");
    }

    public void save() {
        /**
         *<p>此方法的功能介绍</p>
         *save
         *MsSql2005DAO
         *
         *Author:ASUS_1
         <p>2008 2008-12-16 下午02:23:38</p>
        */
        System.out.println("MsSql2005在此处实现保存....");
    }

    public void update()
    {
        /**
         *<p>此方法的功能介绍</p>
         *update
         *MsSql2005DAO
         *
         *Author:ASUS_1
         <p>2008 2008-12-16 下午02:23:38</p>
        */
        System.out.println("MsSql2005在此处实现更新....");
    }

   
}

5.ORACLE具体实现类

/**
 **<p>Oracle数据库实现业务逻辑类</p>
 **作者:   
 **Blong:http://www.blogjava.net/1504
 **E-mail:yyk1504@163.com
 **QQ:251218333
 **<p>2008-12-16 下午02:11:59</p>
*/
package cn.com.model.factory;

import java.sql.Connection;
import java.sql.DriverManager;

public class OracleDAO implements BaseDAO
{

    public void delete()
    {
        /**
         *<p>此方法的功能介绍</p>
         *delete
         *OracleDao
         *
         *Author:ASUS_1
         *<p>2008 2008-12-16 下午02:12:59</p>
        */
        System.out.println("Oracle在此处实现删除....");
    }

    public void save()
    {
        /**
         *<p>此方法的功能介绍</p>
         *save
         *OracleDao
         *
         *Author:ASUS_1
         *<p>2008 2008-12-16 下午02:12:59</p>
        */
        System.out.println("Oracle在此处实现保存....");
    }

    public void update()
    {
        /**
         *<p>此方法的功能介绍</p>
         *update
         *OracleDao
         *
         *Author:ASUS_1
         *<p>2008 2008-12-16 下午02:12:59</p>
        */
        System.out.println("Oracle在此处实现更新....");
    }

 
}

6.工厂类

/**
 *<p>数据库业务工厂</p>
 *作者:   
 *Blong:http://www.blogjava.net/1504
 *E-mail:yyk1504@163.com
 *QQ:251218333
 *<p>2008-12-16 </p>
*/
package cn.com.model.factory;
import cn.com.model.factory.*;
public class DaoFactory

{
     public BaseDAO createFactory(String type)
     {  
                 if ("Mysql".equals(type))
                 {  
                     return new MysqlDAO();  
                 }
                 else
                 if ("MsSql2000".equals(type))
                 {  
                     return new MsSql2000DAO();  
                 }
                 else 
                 if ("MsSql2005".equals(type))
                 {  
                     return new MsSql2005DAO();  
                 }
                 else 
                 if ("Oracle".equals(type))
                 {  
                     return new OracleDAO();  
                 }
                     return null;  
             }  
          
             public static void main(String[] args)
             {  
                 DaoFactory creator = new DaoFactory();  
                 BaseDAO mysqlDAO=creator.createFactory("Mysql"); 
                 mysqlDAO.save();
                 mysqlDAO.update();
                 mysqlDAO.delete();
               
                 System.out.println("---------------------------------");
               
                 BaseDAO msSql2000DAO=creator.createProduct("MsSql2000"); 
                 msSql2000DAO.save();
                 msSql2000DAO.update();
                 msSql2000DAO.delete();
               
                 System.out.println("---------------------------------");
               
                 BaseDAO msSql2005DAO=creator.createProduct("MsSql2005"); 
                 msSql2005DAO.save();
                 msSql2005DAO.update();
                 msSql2005DAO.delete();
               
                 System.out.println("---------------------------------");
               
                 BaseDAO oracleDAO=creator.createProduct("Oracle"); 
                 oracleDAO.save();
                 oracleDAO.update();
                 oracleDAO.delete();

             }   
}

分享到:
评论

相关推荐

    JAVA设计模式(单态模式和简单工厂模式)

    简单工厂模式又叫静态工厂模式,顾名思义,它是用来实例化目标类的静态类。下面我主要通过一个简单的实例说明简单工厂及其优点。 单态模式的定义: Singleton模式主要作用是保证在Java应用程序中,一个类Class只有...

    Java设计模式 版本2

    Java设计模式,目录:前言,UML建模技术,深入浅出UML类图,从招式与内功谈起——设计模式概述,面向对象设计原则,工厂三兄弟之简单工厂模式,工厂三兄弟之工厂方法模式,工厂三兄弟之抽象工厂模式,确保对象的唯一...

    design-pattern-java.pdf

    设计模式综合应用实例 设计模式综合应用实例 多人联机射击游戏 多人联机射击游戏中的设计模式应用(一) 多人联机射击游戏中的设计模式应用(二) 数据库同步系统 设计模式综合实例分析之数据库同步系统(一) 设计...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    此外,本书的配套光盘还免费提供了价值人民币330元的java教学视频,对java语言进行了全面讲解,帮助一些不会java语言的读者快速地从java基础知识的学习中过渡到java web的学习与开发上. 第1部分 xml篇. 第1章 xml...

    JAVA经典设计模式大全

    1.2 Smalltalk MVC中的设计模式 3 1.3 描述设计模式 4 1.4 设计模式的编目 5 1.5 组织编目 7 1.6 设计模式怎样解决设计问题 8 1.6.1 寻找合适的对象 8 1.6.2 决定对象的粒度 9 1.6.3 指定对象接口 9 1.6.4 ...

    设计模式文档

    1.2 Smalltalk MVC中的设计模式 3 1.3 描述设计模式 4 1.4 设计模式的编目 5 1.5 组织编目 7 1.6 设计模式怎样解决设计问题 8 1.6.1 寻找合适的对象 8 1.6.2 决定对象的粒度 9 1.6.3 指定对象接口 9 1.6.4 描述对象...

    java8集合源码-jdt-dpgen:设计模式生成器CLI和IntelliJ插件

    设计模式识别参与的类和实例、它们的角色和协作以及职责的分配。 每个设计模式都专注于特定的面向对象设计问题或问题。 它描述了它何时适用,是否可以考虑到其他设计约束,以及它使用的后果和权衡。 讨论的设计模式...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    此外,本书的配套光盘还免费提供了价值人民币330元的java教学视频,对java语言进行了全面讲解,帮助一些不会java语言的读者快速地从java基础知识的学习中过渡到java web的学习与开发上. 第1部分 xml篇. 第1章 xml...

    java抢票系统源码-ke:客

    设计模式 创造型 单身人士 断言整个应用程序将具有某个对象的单个实例,并提供对该对象的全局访问点。 对对象的访问通过“GetInstance”方法。 工厂方法 定义允许创建对象的不同实现的接口(使用方法“Create”)。 ...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    此外,本书的配套光盘还免费提供了价值人民币330元的java教学视频,对java语言进行了全面讲解,帮助一些不会java语言的读者快速地从java基础知识的学习中过渡到java web的学习与开发上. 第1部分 xml篇. 第1章 xml...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    此外,本书的配套光盘还免费提供了价值人民币330元的java教学视频,对java语言进行了全面讲解,帮助一些不会java语言的读者快速地从java基础知识的学习中过渡到java web的学习与开发上. 第1部分 xml篇. 第1章 xml...

    Java开发详解.zip

    031506_【第15章:Java反射机制】_工厂设计模式笔记.pdf 031601_【第16章:Annotation】_系统内建Annotation笔记.pdf 031602_【第16章:Annotation】_自定义Annotation笔记.pdf 031603_【第16章:Annotation】_反射...

    asp.net知识库

    常用的匹配正则表达式和实例 经典正则表达式 delegate vs. event 我是谁?[C#] 表达式计算引擎 正式发布表达式计算引擎WfcExp V0.9(附源码) 运算表达式类的原理及其实现 #实现的18位身份证格式验证算法 身份证15To18...

    精通并发与 netty 视频教程(2018)视频教程

    Channel选择器工厂与轮询算法及注册底层实现 72_Netty线程模型深度解读与架构设计原则 73_Netty底层架构系统总结与应用实践 74_Netty对于异步读写操作的架构思想与观察者模式的重要应用 75_适配器模式与模板方法模式...

    javaSE代码实例

    第1章 初识Java 3 1.1 Java简介 3 1.1.1 Java的不同平台 3 1.1.2 Java发展的历程 3 1.1.3 Java的特点 4 1.2 安装开发工具包 5 1.2.1 下载JDK 5 1.2.2 安装JDK 6 1.2.3 安装后Java目录的解读 7 1.3...

    软件工程完整ppt

     1123创建型模式中的抽象工厂模式及应用  113对象类的高级概念  1131抽象类、 参数对象类、型与实现对象类  1132接口  1133版型  114组件、 包和结点  1141组件  1142包和包图  1143结点  115习题  第12...

    精通并发与netty视频教程(2018)视频教程

    57_Reactor模式透彻理解及其在Netty中的应用 58_Reactor模式与Netty之间的关系详解 59_Acceptor与Dispatcher角色分析 60_Netty的自适应缓冲区分配策略与堆外内存创建方式 61_Reactor模式5大角色彻底分析 62_Reactor...

    精通并发与netty 无加密视频

    第57讲:Reactor模式透彻理解及其在Netty中的应用 第58讲:Reactor模式与Netty之间的关系详解 第59讲:Acceptor与Dispatcher角色分析 第60讲:Netty的自适应缓冲区分配策略与堆外内存创建方式 第61讲:Reactor...

Global site tag (gtag.js) - Google Analytics