13個のインタフェースを用いて多形性を実現する(dao実装)
インタフェースと多形性
1つのインタフェースが複数のオブジェクトによって実装される場合、クライアント・プログラムは、このインタフェースの方法を使用して複数のオブジェクトの実装(多形性)を使用することができる.
いろいろな例
インタフェースを使用してdaoを実装
メンバー情報をデータベースに格納するdao(dataaccess object)は、複数のデータベース製品をサポートするために実装される
環境ファイル(db.properties)からデータベースタイプに関する情報を読み出し、これらの情報に基づいてdaoインスタンスを作成して実行します.
public class UserInfo {
private String userId;
private String passwd;
private String userName;
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getPasswd() {
return passwd;
}
public void setPasswd(String passwd) {
this.passwd = passwd;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
UserInfoDao.JAva(daoが提供すべきメソッドを宣言したインタフェース)public interface UserInfoDao {
void insertUserInfo(UserInfo userInfo);
void updateUserInfo(UserInfo userInfo);
void deleteUserInf(UserInfo userInfo);
}
UserInfoMySqlDao.MySqlバージョンのdaoはUserInfoDaoインタフェースを実現public class UserInfoMySqlDao implements UserInfoDao{
@Override
public void insertUserInfo(UserInfo userInfo) {
System.out.println("insert into MYSQL DB userId =" + userInfo.getUserId() );
}
@Override
public void updateUserInfo(UserInfo userInfo) {
System.out.println("update into MYSQL DB userId = " + userInfo.getUserId());
}
@Override
public void deleteUserInf(UserInfo userInfo) {
System.out.println("delete from MYSQL DB userId = " + userInfo.getUserId());
}
}
UserInfoOracleDao.Oracleバージョンdao(UserInfoDaoインタフェースを実装)public class UserInfoOracleDao implements UserInfoDao{
public void insertUserInfo(UserInfo userInfo){
System.out.println("insert into ORACLE DB userId =" + userInfo.getUserId() );
}
public void updateUserInfo(UserInfo userInfo){
System.out.println("update into ORACLE DB userId = " + userInfo.getUserId());
}
public void deleteUserInf(UserInfo userInfo){
System.out.println("delete from ORACLE DB userId = " + userInfo.getUserId());
}
}
UserInfoClient.UserInfoDaoインタフェースを利用したクライアントプログラムpublic class UserInfoClient {
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("db.properties");
Properties prop = new Properties();
prop.load(fis);
String dbType = prop.getProperty("DBTYPE");
UserInfo userInfo = new UserInfo();
userInfo.setUserId("12345");
userInfo.setPasswd("!@#$%");
userInfo.setUserName("이순신");
UserInfoDao userInfoDao = null;
if(dbType.equals("ORACLE")){
userInfoDao = new UserInfoOracleDao();
}
else if(dbType.endsWith("MYSQL")){
userInfoDao = new UserInfoMySqlDao();
}
else{
System.out.println("db support error");
return;
}
userInfoDao.insertUserInfo(userInfo);
userInfoDao.updateUserInfo(userInfo);
userInfoDao.deleteUserInf(userInfo);
}
}
db.properties環境ファイルがMYSQLの場合DBTYPE=MYSQL
実行結果db.properties環境ファイルがORACLEの場合
DBTYPE=ORACLE
実行結果Reference
この問題について(13個のインタフェースを用いて多形性を実現する(dao実装)), 我々は、より多くの情報をここで見つけました https://velog.io/@ldevlog/13-인터페이스를-활용한-다형성-구현-dao-구현하기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol