策略模式的目的是: 将代码逻辑和算法逻辑代码分离开来。
实例代码:
abstract class SortStrategy
{
public abstract 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)
{
Console.WriteLine("ShellSorted list ");
}
}
class MergeSort : SortStrategy
{
public override void Sort(ArrayList list)
{
Console.WriteLine("MergeSorted list ");
}
}
class SortedList
{
private ArrayList list = new ArrayList();
private SortStrategy sortstrategy;
public void SetSortStrategy(SortStrategy sortstrategy)
{
this.sortstrategy = sortstrategy;
}
public void Add(string name)
{
list.Add(name);
}
public void Sort()
{
sortstrategy.Sort(list);
foreach (string name in list)
{
Console.WriteLine(" " + name);
}
Console.WriteLine();
}
}
class MainApp
{
static void Main()
{
SortedList studentRecords = new SortedList();
studentRecords.Add("Samual");
studentRecords.Add("Jimmy");
studentRecords.Add("Sandra");
studentRecords.Add("Vivek");
studentRecords.Add("Anna");
studentRecords.SetSortStrategy(new ShellSort());
studentRecords.Sort();
studentRecords.SetSortStrategy(new QuickSort());
studentRecords.Sort();
studentRecords.SetSortStrategy(new MergeSort());
studentRecords.Sort();
Console.Read();
}
}
实例代码:
abstract class SortStrategy
{
public abstract 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)
{
Console.WriteLine("ShellSorted list ");
}
}
class MergeSort : SortStrategy
{
public override void Sort(ArrayList list)
{
Console.WriteLine("MergeSorted list ");
}
}
class SortedList
{
private ArrayList list = new ArrayList();
private SortStrategy sortstrategy;
public void SetSortStrategy(SortStrategy sortstrategy)
{
this.sortstrategy = sortstrategy;
}
public void Add(string name)
{
list.Add(name);
}
public void Sort()
{
sortstrategy.Sort(list);
foreach (string name in list)
{
Console.WriteLine(" " + name);
}
Console.WriteLine();
}
}
class MainApp
{
static void Main()
{
SortedList studentRecords = new SortedList();
studentRecords.Add("Samual");
studentRecords.Add("Jimmy");
studentRecords.Add("Sandra");
studentRecords.Add("Vivek");
studentRecords.Add("Anna");
studentRecords.SetSortStrategy(new ShellSort());
studentRecords.Sort();
studentRecords.SetSortStrategy(new QuickSort());
studentRecords.Sort();
studentRecords.SetSortStrategy(new MergeSort());
studentRecords.Sort();
Console.Read();
}
}


浙公网安备 33010602011771号