Interface의 활용 - 🐥 카카오 테크 캠퍼스
Interface의 정의와 사용
- 자바에서 인터페이스란 추상 메서드와 상수 필드만을 가지는 클래스와 유사한 형태의 추상 타입이다.
- 인터페이스를 사용하면 클래스간의 의존성을 낮출 수 있으며, 다형성을 구현할 수 있다.
- 인터페이스는 다른 클래스에서 해당 메서드를 구현함으로써 인터페이스를 사용하는 클래스에서 해당 메서드를 호출할 수 있도록 한다.
Strategy 패턴의 정의와 사용
- Strategy 패턴은 객체의 행위를 클래스에서 구현하는 것이 아니라, 행위를 구현한 전략을 가진 객체를 전달받아 실행하는 패턴이다.
- Strategy 패턴을 사용하면 실행시간에 알고리즘을 선택할 수 있으며, 기존 코드의 변경 없이 새로운 알고리즘을 추가할 수 있다.
- Strategy 패턴은 인터페이스를 이용해 전략을 구현한 객체를 전달하고, 전달된 객체를 호출해 행위를 실행한다.
사용하는 이유
- 실행 시간에 객체의 행위를 변경해야하는 경우 유용하다.
- Strategy 패턴은 기존 코드의 수정 없이 새로운 행위를 추가할 수 있기 때문에 확장성과 유연성이 좋다.
Example. Dao
DAO(Data Access Object)란 무엇인가?
- 데이터베이스와 같은 영구 저장소에 저장된 데이터를 애플리케이션에서 사용할 수 있게 해주는 패턴입니다.
- 데이터베이스와 연결된 코드를 DB와 독립적으로 만들어서, 유지보수를 쉽게 하기 위한 것입니다.
- CRUD(Create, Read, Update, Delete)와 같은 데이터베이스 관련 작업을 수행하는 메서드를 가지고 있습니다.
무엇이 좋은가?
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의 종류에 따라 인터페이스를 구성한 후, dbType에 따라 실행 시간에 DB에 알맞은 Dao를 사용할 수 있게 되었습니다
또한, 인터페이스인 DAO를 구현함으로써 데이터베이스에 대한 접근 권한을 DAO가 담당함으로서, 로직상 데이터베이스에 대한 구체적인 정보를 알 필요가 없어졌습니다.
즉 DAO 객체를 통해 데이터를 액세스 함으로써 유지보수와 확장성에서 이점이 생깁니다
새로운 DB에 연결하게 되면, 새로 생긴 DB를 위한 DAO를 생성하기만 하면 되는겁니다
부족한 점이나 잘못 된 점을 알려주시면 시정하겠습니다 :>
728x90
'DEV > Java' 카테고리의 다른 글
Java의 Lambda - 🐥 카카오 테크 캠퍼스 (0) | 2023.05.02 |
---|---|
Java의 내부 클래스 - 🐥 카카오 테크 캠퍼스 (0) | 2023.05.02 |
Interface (0) | 2023.04.27 |
타입 상속 (0) | 2023.04.27 |
추상클래스(Abstract Class) (1) | 2023.04.27 |