Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- java #spring #dbcp #connection pool #자바 #스프링
- uuid
- Bridge Patten
- java #Design Pattern #Prototype #디자인패턴 #프로토타입
- 플러터
- java # 설계 #디자인패턴 # gof # 클래스 구조
- 아답터 패턴
- java #디자인패턴 #gof #추상 팩토리 패턴 #abstract
- Restful api #Spring boot #스프링부트
- 브릿지 패턴
- Postgre
- Builder Pattern #빌더 패턴 #디자인패턴 # Design Pattern #생성 패턴
- mybatis
- 팩토리 메서트 # 패턴 #factory method # pattern
- Adapter Patten
- timescale
- 애드몹
- 클래스 다이어그램 #UML
- AdMob
- flyweight pattern
- 플라이웨이 패턴
- 데코레이터 패턴
- java #spring # spring boot # 싱글톤 #prototype
- Flutter
- tm4e
- eclipse #pom.xml #
- java #디자인패턴 #Design Pattern #퍼사드 #Percade
- java #자바 #디자인패턴 #싱글톤 #Singleton
- Spring #Bean #객체생성시점
- Default activity not found #build #에러
Archives
- Today
- Total
개발자의 무지개
퍼사드 패턴 (Facade Patten) 본문
개념
퍼사드 패턴은 구조 패턴중 하나로써 복잡한 인터페이스를 단순화하는 것을 목적으로 중간에서 연관된 기능을 통합하는 클래스를 만드는 방식이다.
디자인패턴에 대한 지식이 없더라도 구조를 개선하고자 고민해본적이 있다면 한번쯤은 사용한 적이 있을 것이다.
이미지 출처 : Facade Method - Python Design Patterns - GeeksforGeeks
상황
DB접속을 위해 드라이버로드 -> DB 접속이 필요하며 일반적인 코드는 아래와 같다.
(오라클 기준으로 작성하였으나 다른 DB도 유사하다.)
String url = "jdbc:oracle:thin:@192.168.0.10:1521:orcl";
String id = "scott";
String pwd = "tiger";
Connection conn;
try {
//Drive load
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
//DB Connect
conn = DriverManager.getConnection(url,id,pwd);
} catch (SQLException e) {
e.printStackTrace();
}
//SQL 실행
...
DB에 접속할 때 마다 드라이버를 로드하고 접속문자열(url)을 만들어 DB연결 코드를 작성해야 한다.
이제 퍼사드 패턴을 적용해보자.
패턴 적용
먼저 OracleConnector라는 Facade 클래스를 생성한다.
public class OracleConnector {
String ip;
int port;
String dbName;
public OracleConnector(String ip, int port, String dbName) {
this.ip = ip;
this.port = port;
this.dbName = dbName;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public Connection connect(String id, String pwd) {
Connection conn = null;
String url = String.format("jdbc:oracle:thin:@%s:%s:%s", ip, port, dbName);
try {
conn = DriverManager.getConnection(url,id,pwd);
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
}
사용부에서는 Facade 클래스인 OracleConnector를 생성하고 DB정보(ip, port, DB명)를 파라메터로 넘긴다.
반환받은 connection 객체로 DB접속을 시도한다.
OracleConnector connector = new OracleConnector("192.168.0.10", 1521, "orcl");
Connection conn = connector.connect("scott", "tiger");
//sql 실행
...
이제 드라이버 로딩이나 접속문자열 같은 세부사항은 알 필요없이, 접속정보만 입력하여 DB를 접속할 수 있게 되었다.
이처럼 퍼사드 패턴은 복잡한 일련의 과정을 퍼사드 클래스 내부에서 처리하게 하여 외부에서 편리하게 사용할 수 있도록 도와주는 패턴이라 볼 수 있다.
'소프트웨어 아키텍처 > 디자인패턴' 카테고리의 다른 글
아답터 패턴 (Adapter Pattern) (0) | 2022.07.19 |
---|---|
클래스 다이어그램 UML 표기 설명 (0) | 2022.07.13 |
싱글톤 패턴 (Singletone Pattern) (0) | 2022.07.09 |
프로토타입 패턴 (Prototype Pattern) (0) | 2022.07.09 |
빌더 패턴 (Builder Pattern) (0) | 2022.07.08 |