Facade Pattern - dnwls16071/Backend_Summary GitHub Wiki
π Facade Pattern μ€λͺ
- Facade : μ¬λ¬ μμλ€λ‘ μ΄λ£¨μ΄μ§ μμ€ν
μ νλμ 창ꡬλ₯Ό ν΅ν΄ κ°λ¨νκ² μ¬μ©ν μ μλλ‘ λ§λ ν¨ν΄
π Facade Pattern μμ μ½λ μ§μ μμ± λ° νλ¦ μ΄ν΄
[Ex1]
// κ° ν΄λμ€λ€μ μμ±μλ‘ μ΄κΈ°ν
// ν΄λΌμ΄μΈνΈκ° κ° ν΄λμ€μ μ‘΄μ¬ μ¬λΆλ₯Ό λͺ°λΌλ SmartHomeFacadeλΌλ νλμ "창ꡬ"λ₯Ό ν΅ν΄ μν΅ν μ μλ€.
public class SmartHomeFacade {
private Thermostat thermostat;
private Lights lights;
private CoffeeMaker coffeeMaker;
public SmartHomeFacade(
Thermostat thermostat, Lights lights, CoffeeMaker coffeeMaker
) {
this.thermostat = thermostat;
this.lights = lights;
this.coffeeMaker = coffeeMaker;
}
public void wakeUp() {
System.out.println("Waking up...");
thermostat.setTemperature(22);
lights.on();
coffeeMaker.brewCoffee();
}
public void leaveHome() {
System.out.println("Leaving home...");
thermostat.setTemperature(18);
lights.off();
}
}
[Ex2]
class FileSystemFacade {
private FileReader fileReader;
private FileWriter fileWriter;
private FileDeleter fileDeleter;
public FileSystemFacade() {
this.fileReader = new FileReader();
this.fileWriter = new FileWriter();
this.fileDeleter = new FileDeleter();
}
public String readFile(String filePath) {
try {
return fileReader.readFile(filePath);
} catch (IOException e) {
System.err.println("Error reading file: " + e.getMessage());
return null;
}
}
public boolean writeFile(String filePath, String content) {
try {
fileWriter.writeFile(filePath, content);
return true;
} catch (IOException e) {
System.err.println("Error writing file: " + e.getMessage());
return false;
}
}
public boolean deleteFile(String filePath) {
try {
fileDeleter.deleteFile(filePath);
return true;
} catch (IOException e) {
System.err.println("Error deleting file: " + e.getMessage());
return false;
}
}
}
- ν΅μ¬ μ 리) Facade ν΄λμ€κ° λ΄λΆμ μΌλ‘ μλΈμμ€ν
λ€μ κ°μ²΄κΉμ§ μ§μ μμ±ν΄μ λ€λ£¨κΈ° λλ¬Έμ μ΄ Facade κ°μ²΄λ§ κ°μ§κ³ λ ν΄λΌμ΄μΈνΈκ° μνλ μμ
μ λͺ¨λ μ²λ¦¬ν μ μλ κ²μ΄λ€.