// -- 인터페스 활용 --
// 1. 구현 클래스를 개발하기 전에 표준 명세로 활용 했다.
// 2. 프로그램을 실행 시키는 시점에서 다형성 및 유연한 코드를 적용시킬 수 있다.
실습 코
-UserInfo
package com.tenco._interface.ex;
public class UserInfo {
private String userId;
private String password;
private String userName;
public String getUserId() {
return userId;
}
public String getPassword() {
return password;
}
public String getUserName() {
return userName;
}
public void setUserId(String userId) {
this.userId = userId;
}
public void setPassword(String password) {
this.password = password;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
-interface UserInfoDao
package com.tenco._interface.ex;
public interface UserInfoDao {
public abstract void insertUserInfo(UserInfo userInfo);
public abstract void updateUserInfo(UserInfo userInfo);
public abstract void deleteUserInfo(String userName);
public abstract void readAllUserInfo();
}
-UserInfoMySqlDao
package com.tenco._interface.ex;
public class UserInfoMySqlDao implements UserInfoDao {
@Override
public void insertUserInfo(UserInfo userInfo) {
System.out.println("INSERT INFO USER ....");
}
@Override
public void updateUserInfo(UserInfo userInfo) {
System.out.println("UPDATE FROM....");
}
@Override
public void deleteUserInfo(String userName) {
System.out.println("DELETE FROM....");
}
@Override
public void readAllUserInfo() {
System.out.println("SELECT * FROM ....");
}
}
-UserInfoOracleDao
package com.tenco._interface.ex;
public class UserInfoOracleDao implements UserInfoDao {
@Override
public void insertUserInfo(UserInfo userInfo) {
System.out.println("오라클 insert into ....");
}
@Override
public void updateUserInfo(UserInfo userInfo) {
System.out.println("오라클 update into ....");
}
@Override
public void deleteUserInfo(String userName) {
System.out.println("오라클 delete into ....");
}
@Override
public void readAllUserInfo() {
System.out.println("오라클 select into ....");
}
}
-UserInfoClient(실행하는 코드)
package com.tenco._interface.ex;
public class UserInfoClient {
private static String DB_TYPE = "MYSQL"; //DB타입 설정값 변경시 출력 결과 다름
//코드 진입점
public static void main(String[] args) {
UserInfo userInfo = new UserInfo();
userInfo.setUserId("ABC");
userInfo.setUserName("홍길동");
userInfo.setPassword("1234");
//인터페이스 활용--
//1. 구현 클래스를 개발하기 전에 표준 명세로 활용했다
//2. 프로그램을 실행 시키는 시점에서 다형성 및 유연한 코드를 적용시킬 수 있다
UserInfoDao userInfoDao = null;
if (DB_TYPE.equals("MYSQL")) {
userInfoDao = new UserInfoMySqlDao();//업케스팅 된 상태
} else if (DB_TYPE.equals("ORACLE")) {
userInfoDao = new UserInfoOracleDao();
}
userInfoDao.insertUserInfo(userInfo);
userInfoDao.updateUserInfo(userInfo);
userInfoDao.deleteUserInfo(userInfo.getUserName());
userInfoDao.readAllUserInfo();
}
}