[c#] C# 오버로딩을 활용한 다양한 디자인 패턴

C#은 오버로딩을 통해 매개변수의 개수나 형식을 다르게하여 메소드나 연산자를 중복 정의할 수 있습니다. 이러한 특징을 활용하여 다양한 디자인 패턴을 구현할 수 있습니다. 여기서는 C# 오버로딩을 활용하여 다양한 디자인 패턴을 구현하는 방법을 살펴보겠습니다.

1. 정적 팩토리 메서드

public class ShapeFactory
{
    public static Shape CreateShape(string shapeType)
    {
        if (shapeType == "circle")
        {
            return new Circle();
        }
        else if (shapeType == "rectangle")
        {
            return new Rectangle();
        }
        // Add more shape types as needed
        else
        {
            throw new ArgumentException("Invalid shape type");
        }
    }
}

2. 빌더 패턴

public class Pizza
{
    // Pizza properties
}

public class PizzaBuilder
{
    private Pizza _pizza = new Pizza();

    public PizzaBuilder AddCheese(int cheeseAmount)
    {
        // Add cheese to the pizza
        return this;
    }

    public PizzaBuilder AddToppings(string toppings)
    {
        // Add toppings to the pizza
        return this;
    }

    // More methods for adding other pizza components

    public Pizza Build()
    {
        return _pizza;
    }
}

3. 전략 패턴

public interface ISortStrategy
{
    void Sort(int[] array);
}

public class BubbleSortStrategy : ISortStrategy
{
    public void Sort(int[] array)
    {
        // Implement bubble sort algorithm
    }
}

public class QuickSortStrategy : ISortStrategy
{
    public void Sort(int[] array)
    {
        // Implement quick sort algorithm
    }
}

public class SortContext
{
    private ISortStrategy _sortStrategy;

    public void SetSortStrategy(ISortStrategy sortStrategy)
    {
        _sortStrategy = sortStrategy;
    }

    public void Sort(int[] array)
    {
        _sortStrategy.Sort(array);
    }
}

위의 예시들처럼 C# 오버로딩을 활용하여 다양한 디자인 패턴을 구현할 수 있습니다.

이러한 디자인 패턴을 적용함으로써 코드의 유연성을 향상시키고, 유지보수성을 높일 수 있습니다.

참고 자료