본문 바로가기
Study/디자인 패턴

[C#/Unity][디자인패턴] 퍼사드 패턴(Facade Pattern)

by 스테디코디스트 2023. 11. 30.
반응형

1. 퍼사드 패턴이란?

- 복잡한 객체 구조에 대한 간략화된 인터페이스를 클라이언트에게 제공하는 패턴

- 사용자가 굳이 알아야 할 필요가 없는 내부 구조 등을 숨기는 패턴

- 클래스 라이브러리와 같은 대규모의 코드를 사용하기 위한 간략한 인터페이스를 제공하는 패턴

- 어떤 서브시스템의 인터페이스에 대한 통합된 인터페이스를 제공하는 패턴

- '건물의 정면' 이라는 ' Facade'의 뜻처럼, '복잡한 시스템의 앞면' 이라는 의미로 사용된다.

 

2. 퍼사드 패턴을 사용하는 경우

- 수십 가지의 기능이 있는 정교한 라이브러리와 통합해야 하지만 그 기능의 극히 일부만을 필요로 하는 경우

- 하위시스템의 각 계층에 대한 진입점을 정의하기 위해 사용

- 복잡한 시스템을 간편하게 다루고 싶을 때 사용

 

3. 퍼사드 패턴의 장점

1) 낮은 이해도 : 복잡한 소프트웨어 라이브러리를 쉽게 이해할 수 있다.

2) 캡슐화 : 외부에는 간단한 인터페이스만 노출되고, 내부에서는 복잡한 내용을 일괄적으로 처리해준다.

3) 일괄처리 : 여러개의 클래스의 상호 동작을 묶어서 처리한다.

4) 낮은 결합도 : 사용자가 복잡한 내부절차를 알지 못해도 단순한 인터페이스만으로 시스템 사용이 가능하다.

 

4. 퍼사드 패턴의 단점

- 퍼사드가 너무 많은 책임을 가지게 되면, 퍼사드 자체가 복잡해지는 문제가 발생할 수 있음.

- 시스템의 세부적인 기능들을 제공하지 못하기 때문에, 복잡한 작업을 하려는 사용자들에게는 제한적일 수 있음.

 

5. 코드 구현

- 슈퍼세트의 개념을 이용하여 운동 프로그램을 간단하게 구현해 보았다.

- 사용자는 ExerciseStart() 함수의 호출만으로 복잡한 내부 작업을 알 필요없이 사용할 수 있다.

 

- 소스코드(c#)

using System;

namespace StudyCSharp
{
    public class Chest
    {
        public void BenchPress()
        {
            Console.WriteLine("가슴\t: 벤치프레스");
        }

        public void PecdecFly()
        {
            Console.WriteLine("가슴\t: 펙덱플라이");
        }

        public void Dips()
        {
            Console.WriteLine("가슴\t: 딥스");
        }
    }

    public class Back
    {
        public void PullUp()
        {
            Console.WriteLine("등\t: 풀업");
        }

        public void DeadLift()
        {
            Console.WriteLine("등\t: 데드리프트");
        }

        public void SitedRow()
        {
            Console.WriteLine("등\t: 시티드로우");
        }
    }

    // 퍼사드 클래스
    public class SuperSet
    {
        private Chest chest;
        private Back back;

        public SuperSet()
        {
            this.chest = new Chest();
            this.back = new Back();
        }

        public void ExerciseStart()
        {
            Console.WriteLine("운동 시작");
            Console.WriteLine();

            Console.WriteLine("[슈퍼세트 1]");
            this.chest.BenchPress();
            this.back.PullUp();
            Console.WriteLine();

            Console.WriteLine("[슈퍼세트 2]");
            this.chest.PecdecFly();
            this.back.DeadLift();
            Console.WriteLine();

            Console.WriteLine("[슈퍼세트 3]");
            this.chest.Dips();
            this.back.SitedRow();
            Console.WriteLine();

            Console.WriteLine("운동 끝");
            Console.WriteLine();
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            SuperSet superSet = new SuperSet();
            superSet.ExerciseStart();
        }
    }
}

 

- 실행 결과


<참고 사이트>

 

[Design Pattern] Facade Pattern(퍼사드 패턴)

퍼사드 패턴이란? 퍼사드(Facade)는 건물의 정면을 의미하는 단어로, 여기서는 복잡한 시스템의 '앞면'이라는 의미로 사용됩니다. 퍼사드 패턴은 클라이언트와 복잡한 시스템 사이에 간편한 인터

gsbang.tistory.com

 

[Design Pattern] Facade Pattern (퍼사드 패턴)

퍼사드 패턴(Facade Pattern)은 구조 패턴(Structural Pattern)의 한 종류로써, 복잡한 서브 클래스들의 공통적인 기능을 정의하는 상위 수준의 인터페이스를 제공하는 패턴이다.퍼사드 객체(Facade Object)는

velog.io

 

 

09 퍼사드 패턴 (Facade Pattern)

퍼사드 패턴 (Facade Pattern) Facade는 "건물의 정면"을 의미하는 단어로 어떤 소프트웨어의 다른 커다란 코드 부분에 대하여 간략화된 인터페이스를 제공해주는 디자인 패턴을 의미합니다. 퍼사드

lktprogrammer.tistory.com

 

 

[C# 디자인패턴] 제11강 퍼사드 패턴

예제코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 using System; using System.Collec

codepump.tistory.com

 

 

6. Facade Pattern (퍼사드 패턴 C# )

[읽기전에] UML 다이어그램 : UML클래스 다이어그램 기본상식 http://hongjinhyeon.tistory.com/25 포스팅되는 디자인 패턴의 예는 스타크래프트를 기본으로 하였습니다 : 디자인 패턴을 시작하며 http://hongji

hongjinhyeon.tistory.com

 

 

퍼사드 패턴

/ 디자인 패턴들 / 구조 패턴 퍼사드 패턴 다음 이름으로도 불립니다: Facade 의도 퍼사드 패턴은 라이브러리에 대한, 프레임워크에 대한 또는 다른 클래스들의 복잡한 집합에 대한 단순화된 인터

refactoring.guru