Skip to content

Commit c19eb0a

Browse files
committed
工厂举例
1 parent 98779f3 commit c19eb0a

3 files changed

Lines changed: 56 additions & 0 deletions

File tree

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
using System.Threading.Tasks;
6+
7+
namespace StrategyPattern
8+
{
9+
/// <summary>
10+
/// 抽象算法类
11+
/// </summary>
12+
abstract class ProduceStrategy
13+
{
14+
public abstract void Decision(int capital);
15+
}
16+
17+
18+
class ProduceStrategySummer:ProduceStrategy
19+
{
20+
public override void Decision(int capital)
21+
{
22+
Console.WriteLine("多生产冰激淋蛋糕");
23+
}
24+
}
25+
26+
class ProduceStrategyWinter : ProduceStrategy
27+
{
28+
public override void Decision(int capital)
29+
{
30+
Console.WriteLine("多生产巧克力蛋糕");
31+
}
32+
}
33+
34+
35+
class ProduceContext
36+
{
37+
private ProduceStrategy produceStrategy;
38+
39+
public ProduceContext(ProduceStrategy ps)
40+
{
41+
this.produceStrategy = ps;
42+
}
43+
44+
public void GetDecision(int cap)
45+
{
46+
produceStrategy.Decision(cap);
47+
}
48+
}
49+
}

DesignPatterns/StrategyPattern/StrategyPattern/Program.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,12 @@ static void Main(string[] args)
2020
context= new Context(new ConcreteStrategyC());
2121
context.ContextOperation();
2222

23+
24+
ProduceContext produceContext = new ProduceContext(new ProduceStrategySummer());
25+
produceContext.GetDecision(1);
26+
27+
produceContext = new ProduceContext(new ProduceStrategyWinter());
28+
produceContext.GetDecision(1);
2329
}
2430
}
2531
}

DesignPatterns/StrategyPattern/StrategyPattern/StrategyPattern.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
<Reference Include="System.Xml" />
4343
</ItemGroup>
4444
<ItemGroup>
45+
<Compile Include="ProduceStrategySummer.cs" />
4546
<Compile Include="Program.cs" />
4647
<Compile Include="Properties\AssemblyInfo.cs" />
4748
<Compile Include="Strategy.cs" />

0 commit comments

Comments
 (0)