본문 바로가기
C#/C# 학습 (TIL)

C# 중급문법 Day9 디자인패턴 : 커맨드패턴, 퍼사드패턴

by jjiing 2022. 6. 24.

커맨드패턴(Command Pattern)

 

 

public interface ICommand
{
    void Execute();
}
public interface IButtonCommand : ICommand
{

}

class Lamp: IButtonCommand
{
    public void TurnOn()
    {
        Debug.Log("불 킴");
    }
    public void Execute()
    {
        TurnOn();
    }
}
class Alarm : IButtonCommand
{
    public void AlarmStart()
    {
        Debug.Log("알람울림");
    }
    public void Execute()
    {
        AlarmStart();
    }
}
class Button
{

    IButtonCommand buttonCommand;
    
    public Button(IButtonCommand buttonCommand)
    {
        this.buttonCommand = buttonCommand;
    }
    public void Pressed()
    {
        buttonCommand.Execute();
    }
}
public class CommandPattern : MonoBehaviour
{
    
    void Start()
    {
        Button buttonA = new Button(new Lamp());
        buttonA.Pressed();
        Button buttonB = new Button(new Alarm());
        buttonB.Pressed();
    }
      
}

 

인터페이스를 상속받아 매개변수로 넣는 형태가 전략패턴과 비슷하다.

전략패턴과의 차이는?

커맨드 패턴 : '무엇'을 하는가. ex)불켜지는 기능을 / 알람이 울리는 기능을
전략 패턴 : '어떻게' 하는가. ex) 친절한 수업스타일로 / 엄격한 수업스타일로

 

 

 

 

퍼사드패턴(Facade Pattern)

 

서브시스템들의 공통적인 기능을 정의하는 단순화된 상위 수준의 인터페이스를 정의하는 패턴


구조도

 

예시

퍼사드 객체는 복잡한 소프트웨어 바깥쪽의 코드가 라이브러리의 안쪽 코드에 의존하는 일을 감소시켜 주고,

복잡한 소프트웨어를 사용 할 수 있게 간단한 인터페이스를 제공해준다.