개발/Java
인터페이스 기반의 프로그래밍
by BellOne4222
2024. 1. 29.
인터페이스 기반의 프로그래밍
인터페이스 기반의 프로그래밍이란?
- 인터페이스 클래스를 노출시키고 자식 클래스의 내부 코드를 숨긴다.
- 자식 클래스에서 재정의를 통해 C에서 노출 되어 있는 기능을 구현하고, 상속관계로 구현
- 느슨한 연결
- 두 객체가 느슨하게 연결되어 있다는 것은 그 둘이 상호작용을 하긴 하지만 서로에 대해서 서로 잘 모른 다는 것을 의미
- User입장에서 자식 클래스의 내부 동작 방식을 모르기 때문에 느슨한 연결 관계
- User는 인터페이스 부모 클래스를 통해 자식 클래스를 동작 시킬 수 있다.
- 자식 클래스의 동작 방식을 몰라도 사용 가능하다.
// CC를 이용하여 BB를 동작시키는 프로그래밍(인터페이스 기반의 프로그래밍)
public class InterfaceAPI {
public static void main(String[] args) {
CC c = new BB(); // Upcasting으로 객체 생성
c.x(); // BB의 x()가 동작 -> 동적 바인딩
c.y();
c.z();
}
}
// CC 인터페이스는 노출
public interface CC {
public void x(); // 추상 클래스
public void y(); // 추상 클래스
public void z(); // 추상 클래스
}
// BB 클래스는 노출 시키지 않는다. (BB.class 파일만 제공하고 BB.java의 소스코드는 제공하지 않는다)
// CC 인터페이스 클래스로 BB 클래스를 동작시킨다.
public class BB implements CC{
@Override
public void x() {
System.out.println("x 동작이 실행된다.");
}
@Override
public void y() {
System.out.println("y 동작이 실행된다.");
}
@Override
public void z() {
System.out.println("z 동작이 실행된다.");
}
}
데이터베이스 연결 Driver
- Driver
- 벤더(DB)들이 자기의 데이터베이스 접속에 필요한 동작을 만들어서 배포하는 클래스들(API)
// 인터페이스는 자바에서 제공을 한다.
public interface Connection {
// 데이터베이스 연결동작
public void getConnection(String url, String username, String password);
}
public class MySQLDriver implements Connection {
@Override
public void getConnection(String url, String username, String password) {
System.out.println("url, username, password 정보를 이용하여 MySQL DB를 접속 시도한다.");
}
}
public class MSSQLDriver implements Connection{
@Override
public void getConnection(String url, String username, String password) {
System.out.println("url, username, password 정보를 이용하여 MSSQL DB를 접속 시도한다.");
}
}
// OracleDriver는 Oracle에서 만들어서 제공하면 된다.(Driver)
public class OracleDriver implements Connection{
@Override
public void getConnection(String url, String username, String password) {
System.out.println("url, username, password 정보를 이용하여 oracle DB를 접속 시도한다.");
}
}
인터페이스를 이용하여 데이터베이스 접속
- JDBC Programming
- 자바에서 데이터베이스와의 연결을 위한 API
- 자바 데이터베이스 프로그래밍
- 자바에서는 인터페이스(공통의 접근방식)을 제공해주고
- 벤더(DB회사)들은 인터페이스를 구현하여 Driver 클래스를 만들고 배포하면 된다.
- 벤더마다 배포된 드라이버 이름(jar)이 다르다.
- 벤더들이 제공하는 데이터베이스 접속 URL과 URL 형식을 알아야한다.
public class DataBaseConnection {
public static void main(String[] args) {
// oracle DB 접속
Connection conn = new OracleDriver();
conn.getConnection("jdbc:oracle:thin:@localhost:1521:XE","system","manager");
// mysql DB 접속
conn=new MySQLDriver();
conn.getConnection("jdbc:mysql://localhost:3306/test","root","12345");
// mssql DB 접속
conn=new MSSQLDriver();
conn.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=mem","sa","12345");
}
}