본문 바로가기

OOP/디자인 패턴

Facade 패턴

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