본문 바로가기
프로그래밍 언어/JAVA(자바) 응용

33.인터페이스를 활용한 다형성

by lroot 2022. 5. 25.
728x90
반응형

인터페이스와 다형성

- 하나의 인터페이스를 여러 객체가 구현하게 되면 클라이언트 프로그램은 인터페이스의 메서드를 활용하여 여러 객체의 구현을 사용할 수 있음(다형성)

 

인터페이스를 활용한 dao 구현하기

- DB에 회원 정보를 넣는 dao(data access object)를 여러 DB 제품이 지원될 수 있게 구현함

- 환경파일(db.properties)에서 database의 종류에 대한 정보를 읽고 그 정보에 맞게 dao 인스턴스를 생성하여 실행될 수 있게 함

 

예제

 

 

- UserInfoDao.java

public interface UserInfoDao {

void insertUserInfo(UserInfo userInfo);
void deleteUserInfo(UserInfo userInfo);
void updateUserInfo(UserInfo userInfo);

}

 

- UserInfoMySqlDao.java

public class UserInfoMySqlDao implements UserInfoDao{

@Override
public void insertUserInfo(UserInfo userInfo) {

System.out.println("Insert into MySQL DB userID ="+userInfo.getUserId());
System.out.println("Insert into MySQL DB userID ="+userInfo.getPassword());
System.out.println("Insert into MYSQL DB userID ="+userInfo.getUserName());
System.out.println("\n");
}

@Override
public void deleteUserInfo(UserInfo userInfo) {

System.out.println("Delete from MySQL DB userID ="+userInfo.getUserId());
System.out.println("\n");
}

@Override
public void updateUserInfo(UserInfo userInfo) {

System.out.println("Update into MySQL DB userID ="+userInfo.getUserId());
System.out.println("\n");
}

}

 

- UserInfoOracle.java

public class UserInfoOracleDao implements UserInfoDao{

@Override
public void insertUserInfo(UserInfo userInfo) {

System.out.println("Insert into Oracle DB userID ="+userInfo.getUserId());
System.out.println("Insert into Oracle DB userID ="+userInfo.getPassword());
System.out.println("Insert into Oracle DB userID ="+userInfo.getUserName());
System.out.println("\n");
}

@Override
public void deleteUserInfo(UserInfo userInfo) {

System.out.println("Delete from Oracle DB userID = 삭제");
System.out.println("\n");
}

@Override
public void updateUserInfo(UserInfo userInfo) {

System.out.println("Update into Oracle DB userID = 업데이트");
System.out.println("\n");
}

}

 

- UserInfo.java

public class UserInfo {

private String userId;
private String password;
private String userName;

public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}

public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}

public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}


}

 

- UserInfoClient.java

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("바보");
userInfo.setPassword("멍청이");
userInfo.setUserName("똥개");

UserInfoDao userInfoDao = null;

if(dbType.equals("ORACLE")) {
userInfoDao = new UserInfoOracleDao();
}
else if(dbType.equals("MYSQL")) {
userInfoDao = new UserInfoMySqlDao();
}
else {
System.out.println("db not prepare");
return;
}

userInfoDao.insertUserInfo(userInfo);
userInfoDao.deleteUserInfo(userInfo);
userInfoDao.updateUserInfo(userInfo);

}


}

댓글