1. 필요성
하나의 작업 단위를 처리하기 위해 여러 객체를 생성해서 처리해야한다고 가정하자.
이러한 상황에서 해당 코드를 프로젝트 내 반복적으로 사용한다면 facade 패턴을 사용하기에 적절하다.
서로 연관은 없지만 묶어줌으로써 추후에 수정시에 용이한 이점을 가져갈 수 있다.
facade는 프랑스어로 외벽을 뜻한다. 반복적으로 사용될 것들을 울타리, 외벽을 쳐서 하나의 묶음으로 만든다고 생각하면 쉬울 것 같다.
2. 여러 객체
class StringConverter{
fun convertToUrl(str : String): String {
val url ="http://$str"
Log.e("convertToUrl",url)
return url
}
}
class InternetConnection{
fun connect(){
Log.e("InternetConnection","connect")
}
fun getData(url : String): String {
Log.e("InternetConnection","getData")
return "data"
}
fun disconnect(){
Log.e("InternetConnection","disconnect")
}
}
class Updater{
fun update(date : String){
Log.e("Updater","update")
}
}
3. facade
class FacadePattern {
fun refreshData(){
val url = StringConverter().convertToUrl("naver.com")
val internetConnection = InternetConnection()
internetConnection.connect()
val data = internetConnection.getData(url)
internetConnection.disconnect()
Updater().update(data)
}
}
4. main
FacadePattern().refreshData()
5. result
'OOP > 디자인 패턴' 카테고리의 다른 글
Decorator 패턴 (0) | 2021.07.05 |
---|---|
Template 패턴 (0) | 2021.07.03 |
Proxy 패턴 (0) | 2021.06.27 |
Adapter 패턴 (0) | 2021.06.26 |
Command 패턴 (0) | 2021.06.24 |