도찐개찐
[코드디자인패턴-JAVA] Facade Pattern 본문
Facade Pattern
사용시점
- 복잡한 시스템에 단순한 인터페이스가 필요할 때
- 여러 서브시스템 감의 종속성이 복잡하게 얽혀 있을 때
- 클라이언트가 서브시스템의 내부 구조를 몰라도 되게 하고 싶을 때
결론
1. 복잡한 시스템의 일부분에 대한 통합된 인터페이스를 제공하는 구조 패턴
2. 클라이언트와 복잡한 시스템 간의 상호작용을 단순화
3. 클라이언트가 시스템의 세부 구조를 몰라도 되게끔 합니다.
// 서브 시스템 클래스
public class FileReader {
public void readFile(String fileName) {
System.out.println("Reading file: " + fileName);
}
}
public class FileWriter {
public void writeFile(String fileName) {
System.out.println("Writing file: " + fileName);
}
}
public class FileDeleter {
public void deleteFile(String fileName) {
System.out.println("Deleting file: " + fileName);
}
}
// 파사드 클래스
public class FileManager {
private FileReader fileReader;
private FileWriter fileWriter;
private FileDeleter fileDeleter;
public FileManager() {
fileReader = new FileReader();
fileWriter = new FileWriter();
fileDeleter = new FileDeleter();
}
public void read(String fileName) {
fileReader.readFile(fileName);
}
public void write(String fileName) {
fileWriter.writeFile(fileName);
}
public void delete(String fileName) {
fileDeleter.deleteFile(fileName);
}
}
// 클라이언트 코드
public class Main {
public static void main(String[] args) {
FileManager fileManager = new FileManager();
fileManager.read("test.txt");
fileManager.write("test.txt");
fileManager.delete("test.txt");
}
}
Main.main(null)
Reading file: test.txt
Writing file: test.txt
Deleting file: test.txt
예제에서 FileManager 클래스가 파사드 역할을 하며, 복잡한 파일 작업을 간단한 메서드로 제공합니다.
클라이언트 코드는 FileManager를 통해 서브시스템과 상호작용하며, 서브시스템의 내부 복잡성을 알 필요가 없습니다.
대표 사례
- 운영체제의 파일 시스템: 파일 시스템의 복잡한 동작을 간단한 메서드로 제공하고, 사용자가 복잡한 파일 관리를 몰라도 되게하는 파사드 역할을 할 수 있습니다.
- 데이터베이스 연결: 데이터베이스와의 연결, 쿼리 실행, 결과처리든 복잡한 과정을 간단한 인터페이스로 제공하고, 클라이언트가 세부사항을 몰라도 되게 할 수 있습니다.
728x90
'프로그래밍 > 코드디자인패턴' 카테고리의 다른 글
[코드디자인패턴-JAVA] Decorator Pattern (0) | 2024.02.29 |
---|---|
[코드디자인패턴-JAVA] Factory Method Pattern (0) | 2024.02.29 |
[코드디자인패턴-JAVA] Observer Pattern (0) | 2024.02.29 |
[코드디자인패턴-JAVA] Singleton Pattern (0) | 2024.02.29 |
[코드디자인패턴-JAVA] State Pattern (0) | 2024.02.29 |
Comments