C#/C# 학습 (TIL)
C# 중급문법 Day9 디자인패턴 : 커맨드패턴, 퍼사드패턴
jjiing
2022. 6. 24. 10:49
커맨드패턴(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)
서브시스템들의 공통적인 기능을 정의하는 단순화된 상위 수준의 인터페이스를 정의하는 패턴


퍼사드 객체는 복잡한 소프트웨어 바깥쪽의 코드가 라이브러리의 안쪽 코드에 의존하는 일을 감소시켜 주고,
복잡한 소프트웨어를 사용 할 수 있게 간단한 인터페이스를 제공해준다.