惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Hugging Face - Blog
Hugging Face - Blog
云风的 BLOG
云风的 BLOG
大猫的无限游戏
大猫的无限游戏
M
MIT News - Artificial intelligence
L
LangChain Blog
阮一峰的网络日志
阮一峰的网络日志
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Recent Announcements
Recent Announcements
IT之家
IT之家
Google DeepMind News
Google DeepMind News
罗磊的独立博客
爱范儿
爱范儿
Last Week in AI
Last Week in AI
人人都是产品经理
人人都是产品经理
U
Unit 42
MongoDB | Blog
MongoDB | Blog
S
SegmentFault 最新的问题
B
Blog
博客园 - 叶小钗
月光博客
月光博客
Stack Overflow Blog
Stack Overflow Blog
V
Visual Studio Blog
C
Check Point Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知

博客园 - AlanPaoPao

23)Visitor 22)Template 20)State 19)Observer 18)Memento 17)Mediator 16)Iterator 15)Interpreter 14)Command 13)Chain Of Responsibility 12)Proxy 11)Flyweight 10)Facade 09)Decorator 08)Composite 07)Bridge 06)Adapter 05)Prototype 04)Factory Method
21)Strategy
AlanPaoPao · 2007-09-21 · via 博客园 - AlanPaoPao

    策略模式的目的是: 将代码逻辑和算法逻辑代码分离开来
    实例代码:

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();
  }

}