Patterns in SOME –Template Method
2007-03-01 14:33
399 查看
[align=left]Code in C#:[/align]
[align=left] [/align]
[align=left]namespace TemplateMethod_DesignPattern[/align]
[align=left]{[/align]
[align=left] using System;[/align]
[align=left] [/align]
[align=left] class Algorithm [/align]
[align=left] {[/align]
[align=left] public void DoAlgorithm() [/align]
[align=left] {[/align]
[align=left] Console.WriteLine("In DoAlgorithm");[/align]
[align=left] [/align]
[align=left] // do some part of the algorithm here[/align]
[align=left] [/align]
[align=left] // step1 goes here[/align]
[align=left] Console.WriteLine("In Algorithm - DoAlgoStep1"); [/align]
[align=left] // . . . [/align]
[align=left] [/align]
[align=left] // step 2 goes here[/align]
[align=left] Console.WriteLine("In Algorithm - DoAlgoStep2"); [/align]
[align=left] // . . . [/align]
[align=left] [/align]
[align=left] // Now call configurable/replacable part[/align]
[align=left] DoAlgoStep3();[/align]
[align=left] [/align]
[align=left] // step 4 goes here[/align]
[align=left] Console.WriteLine("In Algorithm - DoAlgoStep4"); [/align]
[align=left] // . . . [/align]
[align=left] [/align]
[align=left] // Now call next configurable part[/align]
[align=left] DoAlgoStep5();[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] virtual public void DoAlgoStep3()[/align]
[align=left] {[/align]
[align=left] Console.WriteLine("In Algorithm - DoAlgoStep3"); [/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] virtual public void DoAlgoStep5()[/align]
[align=left] {[/align]
[align=left] Console.WriteLine("In Algorithm - DoAlgoStep5"); [/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] class CustomAlgorithm : Algorithm[/align]
[align=left] {[/align]
[align=left] public override void DoAlgoStep3()[/align]
[align=left] {[/align]
[align=left] Console.WriteLine("In CustomAlgorithm - DoAlgoStep3");[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] public override void DoAlgoStep5()[/align]
[align=left] {[/align]
[align=left] Console.WriteLine("In CustomAlgorithm - DoAlgoStep5");[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] ///<summary>[/align]
[align=left] /// Summary description for Client.[/align]
[align=left] ///</summary>[/align]
[align=left] public class Client[/align]
[align=left] {[/align]
[align=left] public static int Main(string[] args)[/align]
[align=left] {[/align]
[align=left] CustomAlgorithm c = new CustomAlgorithm();[/align]
[align=left] [/align]
[align=left] c.DoAlgorithm();[/align]
[align=left] [/align]
[align=left] return 0;[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left]}[/align]
[align=left] [/align]
[align=left]Code in SOME:[/align]
CAlgorithm
DoAlgorithm()
v_DoAlgoStep3()
v_DoAlgoStep5()
CCustomAlgorithm : CAlgorithm
o_DoAlgoStep3()
o_DoAlgoStep5()
CClient
main
CClient.main
{
CCustomAlgorithm c.();
c.DoAlgorithm<CAlgorithm>()
{
<%
Console.WriteLine("In DoAlgorithm");
// do some part of the algorithm here
// step1 goes here
Console.WriteLine("In Algorithm - DoAlgoStep1");
// . . .
// step 2 goes here
Console.WriteLine("In Algorithm - DoAlgoStep2");
// . . .
// Now call configurable/replacable part
DoAlgoStep3();
// step 4 goes here
Console.WriteLine("In Algorithm - DoAlgoStep4");
// . . .
// Now call next configurable part
DoAlgoStep5();
%>
};
}
[align=left] [/align]
[align=left]namespace TemplateMethod_DesignPattern[/align]
[align=left]{[/align]
[align=left] using System;[/align]
[align=left] [/align]
[align=left] class Algorithm [/align]
[align=left] {[/align]
[align=left] public void DoAlgorithm() [/align]
[align=left] {[/align]
[align=left] Console.WriteLine("In DoAlgorithm");[/align]
[align=left] [/align]
[align=left] // do some part of the algorithm here[/align]
[align=left] [/align]
[align=left] // step1 goes here[/align]
[align=left] Console.WriteLine("In Algorithm - DoAlgoStep1"); [/align]
[align=left] // . . . [/align]
[align=left] [/align]
[align=left] // step 2 goes here[/align]
[align=left] Console.WriteLine("In Algorithm - DoAlgoStep2"); [/align]
[align=left] // . . . [/align]
[align=left] [/align]
[align=left] // Now call configurable/replacable part[/align]
[align=left] DoAlgoStep3();[/align]
[align=left] [/align]
[align=left] // step 4 goes here[/align]
[align=left] Console.WriteLine("In Algorithm - DoAlgoStep4"); [/align]
[align=left] // . . . [/align]
[align=left] [/align]
[align=left] // Now call next configurable part[/align]
[align=left] DoAlgoStep5();[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] virtual public void DoAlgoStep3()[/align]
[align=left] {[/align]
[align=left] Console.WriteLine("In Algorithm - DoAlgoStep3"); [/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] virtual public void DoAlgoStep5()[/align]
[align=left] {[/align]
[align=left] Console.WriteLine("In Algorithm - DoAlgoStep5"); [/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] class CustomAlgorithm : Algorithm[/align]
[align=left] {[/align]
[align=left] public override void DoAlgoStep3()[/align]
[align=left] {[/align]
[align=left] Console.WriteLine("In CustomAlgorithm - DoAlgoStep3");[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] public override void DoAlgoStep5()[/align]
[align=left] {[/align]
[align=left] Console.WriteLine("In CustomAlgorithm - DoAlgoStep5");[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] ///<summary>[/align]
[align=left] /// Summary description for Client.[/align]
[align=left] ///</summary>[/align]
[align=left] public class Client[/align]
[align=left] {[/align]
[align=left] public static int Main(string[] args)[/align]
[align=left] {[/align]
[align=left] CustomAlgorithm c = new CustomAlgorithm();[/align]
[align=left] [/align]
[align=left] c.DoAlgorithm();[/align]
[align=left] [/align]
[align=left] return 0;[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left]}[/align]
[align=left] [/align]
[align=left]Code in SOME:[/align]
CAlgorithm
DoAlgorithm()
v_DoAlgoStep3()
v_DoAlgoStep5()
CCustomAlgorithm : CAlgorithm
o_DoAlgoStep3()
o_DoAlgoStep5()
CClient
main
CClient.main
{
CCustomAlgorithm c.();
c.DoAlgorithm<CAlgorithm>()
{
<%
Console.WriteLine("In DoAlgorithm");
// do some part of the algorithm here
// step1 goes here
Console.WriteLine("In Algorithm - DoAlgoStep1");
// . . .
// step 2 goes here
Console.WriteLine("In Algorithm - DoAlgoStep2");
// . . .
// Now call configurable/replacable part
DoAlgoStep3();
// step 4 goes here
Console.WriteLine("In Algorithm - DoAlgoStep4");
// . . .
// Now call next configurable part
DoAlgoStep5();
%>
};
}
相关文章推荐
- Patterns in SOME - Visitor
- Patterns in SOME –Chain Of Responsibility
- Patterns in SOME –Adapter (class)
- Patterns in SOME - Strategy
- Patterns in SOME –Interpreter
- Patterns in SOME –Singleton
- Patterns in SOME –State
- Patterns in SOME –Proxy
- Patterns in SOME –Prototype
- Patterns in SOME –Observer
- Patterns in SOME –Flyweight
- Patterns in SOME –Builder
- Patterns in SOME –Memento
- Patterns in SOME –Facade
- Patterns in SOME –Abstract Factory
- use AWK to extract some lines according to some patterns in file
- Patterns in SOME –Mediator
- Patterns in SOME –Decorator
- Patterns in SOME –Factory Method
- Patterns in SOME –Iterator