Skip to content

Commit d019aef

Browse files
committed
模板方法基本代码
1 parent fac4092 commit d019aef

File tree

3 files changed

+77
-0
lines changed

3 files changed

+77
-0
lines changed
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
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+
}

DesignPatterns/TemplatePattern/TemplatePattern/Program.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff 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
}

DesignPatterns/TemplatePattern/TemplatePattern/TemplatePattern.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="AbstractClass.cs" />
4546
<Compile Include="MobilePhone.cs" />
4647
<Compile Include="Program.cs" />
4748
<Compile Include="Properties\AssemblyInfo.cs" />

0 commit comments

Comments
 (0)