File tree Expand file tree Collapse file tree
DesignPatterns/StrategyPattern/StrategyPattern Expand file tree Collapse file tree Original file line number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff 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}
Original file line number Diff line number Diff line change 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" />
You can’t perform that action at this time.
0 commit comments