본문 바로가기

Software Architect

[Design Pattern] Facade Pattern

Facade Pattern

개요

  • 단순 Wrapper Class 
  • Class 사용법이 복잡하여 쉽게 사용하는 Wrapper를 만들때 사용
  • Design pattern중 가장 간단

구현 방법

//import java.util.ArrayList;
//import java.util.List;


public class main {

	public static void main(String[] args) {
		FacadeWrapper fw = FacadeWrapper.startInstance();  // [1] Singleton 적용
		fw.Write("Test.txt", "Write this!!");              // [3] FacadeWrapper만 호출
		fw.Read("Test.txt");
	}
}

class FacadeWrapper {                                      
	private static FacadeWrapper fw;
	private FacadeWrapper() { };
	
	public static FacadeWrapper startInstance() {          // [2] Singleton 적용  
		if (fw == null) fw = new FacadeWrapper();
		return fw;
	}
	public void Read(String fn) {                          // [4] 실제 적용되는 복잡한 코드
		SimpleReader sr = new SimpleReader();
		sr.FileOpen(fn);
		System.out.println("Read =" + sr.FileRead());
		sr.FileClose();
	}
	public void Write(String fn, String ft) {
		SimpleWriter sw = new SimpleWriter();
		sw.FileOpen(fn);
		sw.FileWrite(ft);
		sw.FileClose();
	}
}

class SimpleReader {                          
	public void FileOpen(String f) {
		System.out.println("Opne "+f);
	}
	
	public String FileRead() {
		return "Read File";
	}
	public void FileClose () {
		System.out.println("File Close");
	}
}

class SimpleWriter {
	public void FileOpen(String f) {
		System.out.println("Opne "+f);
	}
	
	public void FileWrite(String f) {
		System.out.println("Write File "+f);
	}
	public void FileClose () {
		System.out.println("File Close");
	}
}
  • [1] Singleton 호출 (new Class 형태로는 안되도록)
  • [2] Singleton 구현
  • [3] 간단하게 read() 로 사용할 수 있도록 Wrapper 생성
  • [4] read() 호출 시 내부적으로 수행되어야 하는 실제 복잡한 코드

'Software Architect' 카테고리의 다른 글

[Design Pattern] Decorator Pattern  (0) 2022.03.24
[Design Pattern] Adapter Pattern  (0) 2022.03.24
[Design Pattern] Singleton Pattern  (0) 2022.03.24
[Design Pattern] Builder Pattern  (0) 2022.03.24
[Design Pattern] Factory Method Pattern  (0) 2022.03.24