設計模式---工廠方法模式
阿新 • • 發佈:2021-12-16
工廠方法模式: 一個抽象產品類,可以派生出多個具體產品類。 一個抽象工廠類,可以派生出多個具體工廠類。 每個具體工廠類只能建立一個具體產品類的例項。
抽象工廠模式: 多個抽象產品類,每個抽象產品類可以派生出多個具體產品類。 一個抽象工廠類,可以派生出多個具體工廠類。 每個具體工廠類可以建立多個具體產品類的例項,也就是建立的是一個產品線下的多個產品。
區別: 工廠方法模式只有一個抽象產品類,而抽象工廠模式有多個。 工廠方法模式的具體工廠類只能建立一個具體產品類的例項,而抽象工廠模式可以建立多個。
類的檔案:
package factory; import java.sql.SQLException; /** * 工廠方法 工廠類 */ public interface JDBCFactory { public static final String DBDRIVER = "com.mysql.cj.jdbc.Driver"; //定義MySQL資料庫的連線地址 public static final String DBURL = "jdbc:mysql://localhost:3306/restaurant?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai"; //MySQL資料庫的連線使用者名稱 public static final String DBUSER = "root"; //MySQL資料庫的連線密碼 public static final String DBPASS = "root"; }
package factory;
public interface Select extends JDBCFactory{
Object doFactory(String sql);
}
package factory;
public interface Update extends JDBCFactory{
Object doFactory(String sql);
}
package factory; public interface Do extends Select,Update{ @Override Object doFactory(String sql); }
package factory; import java.sql.*; /** * 查詢 ===========工廠方法模式 產品類 */ public class DoSelect implements Do { @Override public Object doFactory(String sql) { Connection connection = null; Statement statement = null; try { Class.forName(DBDRIVER); connection = DriverManager.getConnection(DBURL, DBUSER, DBPASS); statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery(sql); return resultSet; } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException throwables) { throwables.printStackTrace(); } return null; } }
package factory;
import java.sql.*;
/**
* 增刪改===========工廠方法模式 產品類
*/
public class DoUpdate implements Do{
@Override
public Object doFactory(String sql) {
Connection connection = null;
Statement statement = null;
try {
Class.forName(DBDRIVER);
connection = DriverManager.getConnection(DBURL, DBUSER, DBPASS);
statement = connection.createStatement();
int i = statement.executeUpdate(sql);
return i;
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException throwables) {
throwables.printStackTrace();
}finally {
if(connection!=null){
try {
connection.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if(statement!=null){
try {
statement.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
return null;
}
}
抽象工廠:JDBCFactory
具體工廠:Select Update
抽象產品:Do
具體產品:DoSelect DoUpdate
本文來自部落格園,作者:五行缺知識,轉載請註明原文連結:https://www.cnblogs.com/wyw123456/p/15696477.html