반응형

 

 

퍼사드 패턴(Facade Pattern)

안녕하세요 취업길잡이 Coy입니다

오늘은 퍼사드 패턴(Facade Pattern)에 대해서 알아보도록 하겠습니다

 

퍼사드 패턴이란

퍼사드 패턴은 구조패턴의 한종류이며, 복잡한 서브 클래스들의 공통적인 기능을 사용하기 쉽도록 상위 수준의 인터페이스를 정의합니다.

 

사용하는 목적

1. 퍼사드 패턴을 사용하여 서브 시스템으로 구조화를 하면 복잡성을 줄이고, 종속성을 최소화 할 수 있습니다.

 

2. 퍼사드 객체는 서브 클래스의 코드에 의존하는 것을 감소시켜주고 복잡한 서브시스템을 간단히 사용할 수 있게 하나의 인터페이스를 제공합니다.

 

3. 퍼사드 객체를 사용하는 곳(ex. 클라이언트)에서는 여러 서브 클래스를 몰라도 되며, 추상화를 통해 여러 서브 클래스를 호출할 필요 없이 편리하게 사용할 수 있습니다.

 

 

구조

 

 

예제 코드

Client 의존 예시 코드

public class RunService {
    public void Run(final String name) {
        System.out.println("Run" + name);
    }
}

public class RestWalkService {
    public void RestWalk(final String name) {
        System.out.println("Rest Walk"  + name);
    }
}

public class CoolDownService {
    public void CoolDown(final String name) {
        System.out.println("Cool Down " + name);
    }
}

public class Client {
    public static void main(String[] args) {
        RunService runService = new RunService();
        RestWalkService restWalkService = new RestWalkService();
        CoolDownService coolDownService = new CoolDownService();
        runService.Run("1 set time");
        restWalkService.RestWalk("1 set time");
        runService.Run("1 set time");
        restWalkService.RestWalk("1 set time");
        coolDownService.CoolDown("1 set time");
    }
}

 

 

위의 코드는 client가 무엇을 하는지 명확히 알기 힘들며, 유지보수에 용이하지 않습니다.

 

 

 

Facade Pattern 적용 예시 코드

 

public class RunService {
    public void Run(final String name) {
        System.out.println("Run" + name);
    }
}

public class RestWalkService {
    public void RestWalk(final String name) {
        System.out.println("Rest Walk"  + name);
    }
}

public class CoolDownService {
    public void CoolDown(final String name) {
        System.out.println("Cool Down " + name);
    }
}

public class RunningSetService {
    private final RunService runService;
    private final RestWalkService restWalkService;
    private final CoolDownService coolDownService;

    public RunningSetService() {
        runService = new RunService();
        restWalkService = new RestWalkService();
        coolDownService = new CoolDownService();
    }

    public void operateSet(final String name) {
        runService.Run(name);
        restWalkService.RestWalk(name);
				runService.Run(name);
        restWalkService.RestWalk(name);
        coolDownService.CoolDown(name);
    }
}

public class Client {
    public static void main(String[] args) {
        RunningSetService runningSetService = new RunningSetService();
        runningSetService.operateSet("1 set time");
    }
}

 

Client코드가 간결해졌으며 client는 운동 순서가 어떻게 되는지 신경을 안써도 되니 의존성이 줄어들고 유지보수가  편합니다!

 

퍼사드 패턴의 장단점

장점

1.  예시코드로 봤듯이 Client가 서브 시스템(SubSystem)들의 코드를 몰라도 됩니다. 그리고 한 서브 시스템들간의 복잡한 결합도 역시 낮출 수 있습니다.
2.  필요에 따라 서브 시스템의 객체를 참고할 수 있습니다.

 

단점

1. 퍼사드 객체가 이 곳 저 곳 참조하는 전지전능한(God) 객체가 될 수 있습니다.
2. 위의 내용과 비슷한 내용으로 퍼사드 객체는 서브 시스템들 자체에 의존성이 생겨서 의존성을 아예 피할 수는 없습니다.

 

 

오늘 이렇게 퍼사드 패턴에 대해서 알아보았습니다.

디자인 패턴 자체가 가독성을 좋게 하거나, 유지보수가 용이하게 해주는 것은 맞지만, 상황에 따라 잘 사용하는 것이 중요합니다

 

출처(https://m.yes24.com/Goods/Detail/17525598)

 

컬럼으로 다루어 주면 좋겠다 싶은 주제가 있으면 댓글로 알려주세요

 

도움이 필요하시면 사연을 메일로 보내주세요

 

jek300300@gmail.com

 

도움이 되셨다면 공감과 구독 부탁드립니다

 

읽어주셔서 감사합니다

 

당신의 취업이 성공할 때까지 같이 하겠습니다! by 취업길잡이 Coy

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기