File tree Expand file tree Collapse file tree 3 files changed +77
-0
lines changed
DesignPatterns/TemplatePattern/TemplatePattern Expand file tree Collapse file tree 3 files changed +77
-0
lines changed 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+
8+ namespace TemplatePattern
9+ {
10+ /// <summary>
11+ /// 模板方法的基本代码
12+ /// </summary>
13+
14+
15+ //抽象模板类
16+ abstract class AbstractClass
17+ {
18+ public abstract void PrimitOpA ( ) ;
19+ public abstract void PrimitOpB ( ) ;
20+ public abstract void PrimitOpC ( ) ;
21+
22+ /// <summary>
23+ /// 模板方法
24+ /// </summary>
25+ public void TemplateMethod ( )
26+ {
27+ PrimitOpA ( ) ;
28+ PrimitOpB ( ) ;
29+ PrimitOpC ( ) ;
30+ }
31+ }
32+
33+
34+ class ConcreteClassA : AbstractClass
35+ {
36+ public override void PrimitOpA ( )
37+ {
38+ Console . WriteLine ( "具体类A操作A" ) ;
39+ }
40+
41+ public override void PrimitOpB ( )
42+ {
43+ Console . WriteLine ( "具体类A操作B" ) ;
44+ }
45+
46+ public override void PrimitOpC ( )
47+ {
48+ Console . WriteLine ( "具体类A操作C" ) ;
49+ }
50+ }
51+
52+
53+ class ConcreteClassB : AbstractClass
54+ {
55+ public override void PrimitOpA ( )
56+ {
57+ Console . WriteLine ( "具体类B操作A" ) ;
58+ }
59+
60+ public override void PrimitOpB ( )
61+ {
62+ Console . WriteLine ( "具体类B操作B" ) ;
63+ }
64+
65+ public override void PrimitOpC ( )
66+ {
67+ Console . WriteLine ( "具体类B操作C" ) ;
68+ }
69+ }
70+ }
Original file line number Diff line number Diff line change @@ -21,6 +21,12 @@ static void Main(string[] args)
2121 mobilePhoneB . DialUp ( ) ;
2222 mobilePhoneB . about ( ) ;
2323 mobilePhoneB . PowerOff ( ) ;
24+
25+ AbstractClass abstractClass ;
26+ abstractClass = new ConcreteClassA ( ) ;
27+ abstractClass . TemplateMethod ( ) ;
28+ abstractClass = new ConcreteClassB ( ) ;
29+ abstractClass . TemplateMethod ( ) ;
2430 }
2531 }
2632}
Original file line number Diff line number Diff line change 4242 <Reference Include =" System.Xml" />
4343 </ItemGroup >
4444 <ItemGroup >
45+ <Compile Include =" AbstractClass.cs" />
4546 <Compile Include =" MobilePhone.cs" />
4647 <Compile Include =" Program.cs" />
4748 <Compile Include =" Properties\AssemblyInfo.cs" />
You can’t perform that action at this time.
0 commit comments