커맨드패턴(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)
서브시스템들의 공통적인 기능을 정의하는 단순화된 상위 수준의 인터페이스를 정의하는 패턴


퍼사드 객체는 복잡한 소프트웨어 바깥쪽의 코드가 라이브러리의 안쪽 코드에 의존하는 일을 감소시켜 주고,
복잡한 소프트웨어를 사용 할 수 있게 간단한 인터페이스를 제공해준다.
'C# > C# 학습 (TIL)' 카테고리의 다른 글
C# OverlapSphere / 콜라이더 배열 (0) | 2022.06.26 |
---|---|
유니티 Roll a ball 실습 (0) | 2022.06.26 |
C# 중급문법 Day8 Coroutine (코루틴) (0) | 2022.06.23 |
C# 중급문법 Day7 Reflection / DeepCopy 일반화(reflection 적용) (0) | 2022.06.22 |
C# 디자인패턴 : 템플릿메서드 / 옵저버패턴 (0) | 2022.06.21 |