宸ュ巶妯″紡鍦ㄩ」鐩腑鏄父甯哥敤鍒扮殑,鏈変漢璇村彧鏈夊ぇ欏圭洰鎵嶄細鐢ㄥ埌,灝忛」鐩槸浣撲細涓嶅嚭鏉?鍏跺疄浣跨敤璁捐妯″紡涓庨」鐩殑澶у皬娌℃湁瀹炶川鎬х殑鑱旂郴.璁捐妯″紡鏄粡楠岀殑鎬葷粨鑰屼笉鏄 閲忛」鐩ぇ灝忕殑鏍囧噯.
浠ュ紑鍙戦」鐩殑DAO灞備負渚?鍦ㄩ」鐩腑瀹㈡埛鐨勯渶姹傛槸甯稿父鍙樺姩鐨?涓存椂鏇存崲鏁版嵁搴撶殑闇姹備篃鏄父甯稿彂鐢熺殑,閭f垜浠濡備綍瑙e喅璺ㄦ暟鎹簱鐨勫姛鑳?榪欓噷灝辮浣跨敤鍒版娊璞″伐鍘傛ā寮忎簡.宸ュ巶妯″紡甯稿父鐢ㄤ簬鍒涘緩澶氱郴鍒楀寲鐨勫璞?濡侽rale緋誨垪,MySql緋誨垪)
1.棣栧厛瀹氫箟鐩稿叧鎺ュ彛(涓庡鉤甯哥殑鍋氭硶娌′粈涔堝尯鍒?
- // 瑙掕壊琛―AO鎺ュ彛
- interface IroleDao {
- void insert();
-
- void update();
- }
- // 鐢ㄦ埛琛―AO鎺ュ彛
- interface IuserDao {
- void find();
-
- void delete();
- }
// 瑙掕壊琛―AO鎺ュ彛
interface IroleDao {
void insert();
void update();
}
// 鐢ㄦ埛琛―AO鎺ュ彛
interface IuserDao {
void find();
void delete();
}
2.涓嶅悓鐨勬暟鎹簱鏈変笉鍚岀殑SQL璇彞鎵浠ュ疄鐜版椂蹇呴』鍒嗘暟鎹簱鏉ュ疄鐜?/p>
- // 鐢ㄦ埛琛∣ralce鏁版嵁搴揇AO
- class OracleuserDao implements IuserDao {
- public void delete() {
- System.out.println("Oralce 鍒犻櫎鐢ㄦ埛琛ㄦ暟鎹?);
- }
-
- public void find() {
- System.out.println("Oralce 鏌ヨ鐢ㄦ埛琛ㄦ暟鎹?);
- }
- }
-
- // 鐢ㄦ埛琛∕ySql鏁版嵁搴揇AO
- class MySqluserDao implements IuserDao {
- public void delete() {
- System.out.println("MySql 鍒犻櫎鐢ㄦ埛鏁版嵁");
- }
-
- public void find() {
- System.out.println("MySql 鏌ヨ鐢ㄦ埛鏁版嵁");
- }
- }
- // 瑙掕壊琛∣racle鏁版嵁搴揇AO
- class OracleroleDao implements IroleDao {
- public void insert() {
- System.out.println("Oralce 瀵硅鑹茶〃鎻掑叆鏁版嵁");
- }
-
- public void update() {
- System.out.println("Oracle 瀵硅鑹茶〃鏇存柊鏁版嵁");
- }
- }
-
- // 瑙掕壊琛∕ySql鏁版嵁搴揇AO
- class MySqlroleDAO implements IroleDao {
- public void insert() {
- System.out.println("MySql 瀵硅鑹茶〃鎻掑叆鏁版嵁");
- }
-
- public void update() {
- System.out.println("Mysql 瀵硅鑹茶〃鏇存柊鏁版嵁");
- }
- }
// 鐢ㄦ埛琛∣ralce鏁版嵁搴揇AO
class OracleuserDao implements IuserDao {
public void delete() {
System.out.println("Oralce 鍒犻櫎鐢ㄦ埛琛ㄦ暟鎹?);
}
public void find() {
System.out.println("Oralce 鏌ヨ鐢ㄦ埛琛ㄦ暟鎹?);
}
}
// 鐢ㄦ埛琛∕ySql鏁版嵁搴揇AO
class MySqluserDao implements IuserDao {
public void delete() {
System.out.println("MySql 鍒犻櫎鐢ㄦ埛鏁版嵁");
}
public void find() {
System.out.println("MySql 鏌ヨ鐢ㄦ埛鏁版嵁");
}
}
// 瑙掕壊琛∣racle鏁版嵁搴揇AO
class OracleroleDao implements IroleDao {
public void insert() {
System.out.println("Oralce 瀵硅鑹茶〃鎻掑叆鏁版嵁");
}
public void update() {
System.out.println("Oracle 瀵硅鑹茶〃鏇存柊鏁版嵁");
}
}
// 瑙掕壊琛∕ySql鏁版嵁搴揇AO
class MySqlroleDAO implements IroleDao {
public void insert() {
System.out.println("MySql 瀵硅鑹茶〃鎻掑叆鏁版嵁");
}
public void update() {
System.out.println("Mysql 瀵硅鑹茶〃鏇存柊鏁版嵁");
}
}
榪欓噷澧炲姞浜嗕竴濂桪AO鐨勫疄鐜?nbsp;(涓庡鉤鏃舵湁鎵涓嶅悓,濡傛灉鏈?0涓暟鎹簱灝辮鍔犱笂10縐嶄笉鍚岀殑瀹炵幇,姣旇緝楹葷儲鍛
)
3.瀹氫箟DAO宸ュ巶鎺ュ彛涓庡疄鐜?鍒╃敤java鍙嶅皠鏈哄埗鐢熶駭鍑轟綘闇瑕佺殑DAO濡?userDAO,roleDao)
- // DAO宸ュ巶
- abstract class DaoFactory {
- public static DaoFactory getInstance(String classname) {
- DaoFactory dao = null;
- try {
- dao = (DaoFactory) Class.forName(classname).newInstance();
- } catch (Exception e) {
- e.printStackTrace();
- }
- return dao;
- }
-
- abstract IuserDao getuserdao();
-
- abstract IroleDao getroledao();
- }
-
- // Oralce宸ュ巶
- class OracleFactory extends DaoFactory {
- public IroleDao getroledao() {
- return new OracleroleDao();
- }
- public IuserDao getuserdao() {
- return new OracleuserDao();
- }
- }
-
- // MySql宸ュ巶
- class MysqlFactory extends DaoFactory {
- public IroleDao getroledao() {
- return new MySqlroleDAO();
- }
- public IuserDao getuserdao() {
- return new MySqluserDao();
- }
- }
// DAO宸ュ巶
abstract class DaoFactory {
public static DaoFactory getInstance(String classname) {
DaoFactory dao = null;
try {
dao = (DaoFactory) Class.forName(classname).newInstance();
} catch (Exception e) {
e.printStackTrace();
}
return dao;
}
abstract IuserDao getuserdao();
abstract IroleDao getroledao();
}
// Oralce宸ュ巶
class OracleFactory extends DaoFactory {
public IroleDao getroledao() {
return new OracleroleDao();
}
public IuserDao getuserdao() {
return new OracleuserDao();
}
}
// MySql宸ュ巶
class MysqlFactory extends DaoFactory {
public IroleDao getroledao() {
return new MySqlroleDAO();
}
public IuserDao getuserdao() {
return new MySqluserDao();
}
}
4. 瀹氫箟閰嶇疆鏂囦歡
- class Config {
- // Oralce
- static final String ORALCE = "org.abc.OracleFactory";
-
- static final String MYSQL = "org.abc.MysqlFactory";
- }
class Config {
// Oralce
static final String ORALCE = "org.abc.OracleFactory";
static final String MYSQL = "org.abc.MysqlFactory";
}
閰嶇疆鏂囦歡鍙互瀹氫箟鍒癤ML涓幓(濂藉:淇敼閰嶇疆欏逛箣鍚庝笉闇瑕佸JAVA鏂囦歡榪涜緙栬瘧.)
5.嫻嬭瘯浣犵殑杈撳嚭鐨凞AO
- public class Dao {
- public static void main(String[] args) {
- DaoFactory.getInstance(Config.ORALCE).getroledao().insert();
- DaoFactory.getInstance(Config.MYSQL).getroledao().insert();
- }
-
- }
public class Dao {
public static void main(String[] args) {
DaoFactory.getInstance(Config.ORALCE).getroledao().insert();
DaoFactory.getInstance(Config.MYSQL).getroledao().insert();
}
}
鎬葷粨
浣跨敤鏉′歡錛氫竴緋誨垪鎺ュ彛鏈変竴緋誨垪鐨勫疄鐜?br />
濡備笂IuserDao銆両roleDao絳変竴緋誨垪鐨勬帴鍙o紝浠栦滑鍙互鏈変竴緋誨垪鐨勫疄鐜?Oracle鏂瑰紡銆丮ySql鏂瑰紡)
OracleuserDao銆丱racleroleDao銆丮ySqluserDao銆丮ySqlroleDAO
緇勬垚鍏冪礌(浠ヤ笂闈緥瀛?
涓緋誨垪鎺ュ彛錛欼userDao銆両roleDao
涓緋誨垪瀹炵幇錛歄racle緋誨垪銆丮ySql緋誨垪
緋誨垪宸ュ巶綾伙細Oracle緋誨垪宸ュ巶綾匯丮ySql緋誨垪宸ュ巶綾?蹇呴』緇ф壙鎶借薄宸ュ巶綾?
鎶借薄宸ュ巶綾伙細DaoFactory