더블 디스패치(Double Dispatch)
이 패턴은 둘 이상의 개체 유형에 따라 다르게 동작해야 하는 작업이 있는 경우 특히 유용하다고한다.
단일 디스패치의 단점을 보완했다.
<예시코드>
public interface IShape
{
void Accept(IShapeVisitor visitor);
}
public class Circle : IShape
{
public void Accept(IShapeVisitor visitor)
{
visitor.Visit(this);
}
}
public class Square : IShape
{
public void Accept(IShapeVisitor visitor)
{
visitor.Visit(this);
}
}
public interface IShapeVisitor
{
void Visit(Circle circle);
void Visit(Square square);
}
public class ShapeTypePrinter : IShapeVisitor
{
public void Visit(Circle circle)
{
Console.WriteLine("This is a circle");
}
public void Visit(Square square)
{
Console.WriteLine("This is a square");
}
}
< 실제 사용 예시>
IShape shape1 = new Circle();
IShape shape2 = new Square();
IShapeVisitor printer = new ShapeTypePrinter();
shape1.Accept(printer); // prints "This is a circle"
shape2.Accept(printer); // prints "This is a square"
반응형
더블 디스패처 패턴을 사용하게되면 복잡한 유형 검사 및 캐스팅을 피하고 코드를 보다 유연하고
유지 관리하기 쉽게 만드는 데 도움이 될 수 있다.
그러나 코드의 복잡성을 증가시키고 이해하기 어렵게 만들 수도 있으므로 신중하게 사용해야 한다.
참고링크 Double Dispatch in C# and DDD : [링크]
★☆☆☆☆
반응형
'개발 > 기본) 디자인패턴' 카테고리의 다른 글
개발원칙) DRY 개발원칙 (Don't Repeat Yourself) (0) | 2024.05.13 |
---|---|
디자인패턴) 노출 모듈 패턴 (Revealing Module Pattern- JavaScript) (0) | 2023.06.16 |
디자인패턴) Main Loop Architecture (0) | 2023.01.05 |
디자인패턴)KISS Command Pattern (KEEP IT SIMPLE STUPID) (0) | 2022.04.05 |
디자인패턴) 방문자 패턴(Visitor Pattern) (0) | 2020.07.07 |
댓글