数据加载中……
Facade模式的一个典型应用--数据库JDBC的应用
Facade模式的定义: 为子系统中的一组接口提供一个一致的界面.Facade一个典型应用就是数据库JDBC的应用,如下例对数据库的操作:
说明:这是在网上的一篇文章中看到的列子,上面没有写全,我在这里补上了,没有用到接口。

package com.pattern.structural.facade;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/*
 * 外观模式的主要用途就是为子系统的复杂处理过程提供方便的调用方法,
 * 使得子系统更加容易被使用。
 * Facade对象通常属于Singleton模式。
*/
public class Mysql {
   
    private static Connection conn=null;
    private static PreparedStatement prep=null;

    public Mysql(String sql) {
        try {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test","root","");
            prep = conn.prepareStatement(sql);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void setString(int index, String parString) {
        try {
            prep.setString(index, parString);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public ResultSet executeQuery() {
        try {
            return prep.executeQuery();
        } catch (SQLException e) {
            e.printStackTrace();
            return null;
        }
    }

    public void close() {
        try {
            conn.close();
            prep.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}


package com.pattern.structural.facade;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class DBCompare {

    public void getResultSet(String sql) {
//        String sql = "SELECT * FROM bulletin WHERE id = ?";
        Mysql mysql = new Mysql(sql);
        try {
            mysql.setString(1, "4");
            ResultSet rset = mysql.executeQuery();
            while (rset.next()) {
                System.out.println(rset.getString("id"));
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            mysql.close();
            mysql = null;
        }
    }
}


package com.pattern.structural.facade;

import java.sql.ResultSet;

public class FacadeTest {

    public static void main(String[] args) {
       
        Mysql mysql = new Mysql("SELECT * FROM bulletin");
        try {
            ResultSet rset = mysql.executeQuery();
            while (rset.next()) {
                System.out.println(rset.getString("id"));
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            mysql.close();
            mysql = null;
        }
       
    }

}

posted on 2008-02-28 15:27 java flex 结合 阅读(2665) 评论(5)  编辑  收藏 所属分类: patternmysql

评论

# re: Facade模式的一个典型应用--数据库JDBC的应用 2008-02-29 10:38 香草的天空

你这个其实叫Dao

不素Facade
  回复  更多评论    

# re: Facade模式的一个典型应用--数据库JDBC的应用 2008-03-02 14:44 xifu

Facade的本意是为不同的操作通过封装提供统一的、一致的操作方法
  回复  更多评论    

# re: Facade模式的一个典型应用--数据库JDBC的应用 2008-05-22 12:54  .

什么跟什么 啊。。。。。。。。。。。。。。。
  回复  更多评论    

# re: Facade模式的一个典型应用--数据库JDBC的应用 2010-06-17 10:09 facade

你不懂
  回复  更多评论    

# re: Facade模式的一个典型应用--数据库JDBC的应用 2012-06-07 16:06 kensunhu

认为Mysql类是个facade,因为符合定义:“Provide a unified interface to a set of interfaces in a subsystem. Facade Pattern defines a higher-level interface that makes the subsystem easier to use.”
  回复  更多评论    

只有注册用户登录后才能发表评论。


网站导航: