[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# 오버로딩을 활용하여 다양한 디자인 패턴을 구현할 수 있습니다.
이러한 디자인 패턴을 적용함으로써 코드의 유연성을 향상시키고, 유지보수성을 높일 수 있습니다.