일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 삼성의료원부지
- 청년원가주택
- Spring 웹
- DataBinding
- spring
- WPF
- 대방동군부지
- ESP-DL
- 공릉아파트부지
- http
- 아두이노
- 구체화하기
- 50만호공급
- C#
- C-V2X
- 아두이노라이브러리
- 아두이노 개발
- Ai
- 리츠주택
- ESP32
- V2X
- ObjectNode
- SpringBoot
- onnxruntime
- java programming
- wave
- C-ITS
- 웹개발
- Spring 웹개발
- ListView
- Today
- Total
John's 개발자의 관심노트
JAVA Design Pattern, Facade Pattern 파사드 패턴 본문
파사드 패턴 (Facade Pattern) 이란 무엇인가?
파사드는 어떤 소프트웨어의 다른 커다란 코드 부분에 대해 간략화된 인터페이스를 제공하는 객체다.
파사드 패턴은 하나의 큰 기능을 사용하기 위해서 연결되는 여러 객체들의 사용을 일원화시켜 단순하게 사용할 수 있도록 해준다.
파사트 패턴 (Facede Pattern) 을 사용하는 이유!
파사드 패턴(Facade Pattern) 은 하나의 큰 기능을 사용하기 위한 서브 객체들의 사용을 단순화 시켜준다고 했는데,
예를들어, FTP 서버에 접근하여 파일을 수정할 때,
서버를 연결하고, 파일을 열어서, 읽고 쓰고, 파일을 닫고, 서버를 닫는다.
이때 사용하기 위해 필요한 작업이, Server Open, File Reader Open, File Writer Open 총 3가지의 객체를 연결하고 해제하는 작업들이 필요한데 이를 한 곳에 묶어 편리하게 사용할 수 있도록 만들어주기 위한 목적이다.
Example
위 사용하는 이유에서 언급했던 FTP 서버를 기반으로 File을 Read/Write 하는 작업을 한 객체에서 처리할 수 있도록 만들어 보자.
Reader 클래스 생성,
public class Reader {
private String fileName;
public Reader(String fileName){
this.fileName = fileName;
}
public void fileOpen(){
String msg = String.format("Reader %s is opend", fileName);
System.out.println(msg);
}
public void read(){
String msg = String.format("Reader %s Read Data : ++++++++++++++", fileName);
System.out.println(msg);
}
public void fileClose(){
String msg = String.format("Reader %s is closed", fileName);
System.out.println(msg);
}
}
Writer 클래스 생성,
public class Writer {
private String fileName;
public Writer(String fileName){
this.fileName = fileName;
}
public void fileOpen(){
String msg = String.format("Writer %s is open", fileName);
System.out.println(msg);
}
public void write(){
String msg = String.format("Writer %s is written : ------------", fileName);
System.out.println(msg);
}
public void fileClose(){
String msg = String.format("Writer %s is close", fileName);
System.out.println(msg);
}
}
FacadeFtp 클래스 생성
public class FacadeFtp {
private Ftp ftp;
private Reader reader;
private Writer writer;
public FacadeFtp(String host, int port, String path, String fileName){
this.ftp = new Ftp(host, port, path);
this.reader = new Reader(fileName);
this.writer = new Writer(fileName);
}
public void connect(){
ftp.connect();
ftp.moveDirectory();
writer.fileOpen();
reader.fileOpen();
}
public void disconnect(){
writer.fileClose();
reader.fileClose();
ftp.disconnect();
}
public void read(){
reader.read();
}
public void write(){
writer.write();
}
}
Main 문 작성,
public class Main {
public static void main(String[] args) {
FacadeFtp facadeFtp = new FacadeFtp("www.foo.co.kr", 22, "/home/etc", "text.txt");
facadeFtp.connect();
facadeFtp.read();
facadeFtp.write();
facadeFtp.disconnect();
}
}
모든 코딩이 완료되면 결과는 아래와 같다.
위와 같이 작성해두면, FTP 서버 접속 부터, File Open / Close 까지 하나의 Method 로 해결이 가능하다.
한 개의 큰 기능을 사용하는데에 연관된 여러 객체들을 모아서 단순화 시켜두면 객체간 의존성을 효율적으로 관리가 가능하고,
보다 더 간편하게 기능을 사용할 수 있다.
개인적으로 이해한 내용을 바탕으로 한 글이므로 잘못된 부분이 있다면 다양한 의견 부탁드립니다.
'[개발] > Spring WEB' 카테고리의 다른 글
HTTP Protocol Test 프로그램 사용법 "Talend API Tester" (0) | 2022.10.14 |
---|---|
JAVA Design Pattern, Strategy Pattern, 전략 패턴 (2) | 2022.10.14 |
JAVA Design Pattern, Proxy Pattern 프록시 패턴 (0) | 2022.10.12 |
JAVA Design Pattern, Adapter Pattern 어뎁터 패턴 (0) | 2022.10.12 |
JAVA Design Pattern, Singleton Pattern 싱글톤 패턴 (0) | 2022.10.12 |