using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
namespace DesignFactory.Strategy
{
/// <summary>
/// 策略模式
/// </summary>
class StrategyPattern
{
}
abstract class SortStrategy
{
abstract public void Sort(ArrayList list);
}
class QuickSort : SortStrategy
{
public override void Sort(ArrayList list)
{
list.Sort();
Console.WriteLine("QuickSorted list");
}
}
class ShellSort : SortStrategy
{
public override void Sort(ArrayList list)
{
//list.ShellSort();
Console.WriteLine("ShellSorted list");
}
}
class MergeSort : SortStrategy
{
public override void Sort(ArrayList list)
{
//list.MergeSort();
Console.WriteLine("MergeSorted list");
}
}
class SortedList
{
private ArrayList list = new ArrayList();
private SortStrategy sortstrategy;
public void SetSortStrategy(SortStrategy sortstrategy)
{
this.sortstrategy = sortstrategy;
}
public void Sort()
{
sortstrategy.Sort(list);
}
public void Add(string name)
{
list.Add(name);
}
public void Display()
{
foreach (string name in list)
{
Console.WriteLine(Environment.NewLine + name);
}
}
}
public class StrategyApp
{
public static void Main(string[] args)
{
SortedList studentRecords = new SortedList();
studentRecords.Add("Samual");
studentRecords.Add("Jimmy");
studentRecords.Add("Sandra");
studentRecords.Add("Anna");
studentRecords.Add("Vivek");
studentRecords.SetSortStrategy(new QuickSort());
studentRecords.Sort();
studentRecords.Display();
}
}
}