惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Tailwind CSS Blog
大猫的无限游戏
大猫的无限游戏
L
LINUX DO - 热门话题
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
雷峰网
雷峰网
aimingoo的专栏
aimingoo的专栏
博客园_首页
MongoDB | Blog
MongoDB | Blog
V
V2EX
GbyAI
GbyAI
量子位
Microsoft Azure Blog
Microsoft Azure Blog
有赞技术团队
有赞技术团队
G
Google Developers Blog
云风的 BLOG
云风的 BLOG
B
Blog
Microsoft Security Blog
Microsoft Security Blog
S
SegmentFault 最新的问题
O
OpenAI News
N
News and Events Feed by Topic
博客园 - Franky
爱范儿
爱范儿
Forbes - Security
Forbes - Security
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
V2EX - 技术
V2EX - 技术
Application and Cybersecurity Blog
Application and Cybersecurity Blog
N
News and Events Feed by Topic
N
News | PayPal Newsroom
Schneier on Security
Schneier on Security
Cloudbric
Cloudbric
Security Archives - TechRepublic
Security Archives - TechRepublic
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Recent Commits to openclaw:main
Recent Commits to openclaw:main
人人都是产品经理
人人都是产品经理
P
Privacy International News Feed
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
B
Blog RSS Feed
阮一峰的网络日志
阮一峰的网络日志
D
DataBreaches.Net
Last Week in AI
Last Week in AI
罗磊的独立博客
Spread Privacy
Spread Privacy
Recent Announcements
Recent Announcements
The Cloudflare Blog
Google DeepMind News
Google DeepMind News
AWS News Blog
AWS News Blog
The Register - Security
The Register - Security
Y
Y Combinator Blog
J
Java Code Geeks
I
Intezer

博客园 - 李明飞

C#设计模式之我见(四)Ⅱ C#设计模式之我见(三)Ⅲ C#设计模式之我见(三)Ⅱ C#设计模式之我见(三)Ⅰ C#设计模式之我见(二)Ⅱ C#设计模式之我见(二)Ⅰ C#设计模式之我见(一) 面向对象编程之重用、继承、多态、抽象 初探SilverLight 2.0的安装和部署 工作小札,生活一杯羹! “管家婆”的好帮手——我的理财小管家 类库DLL属性说明和正确使用App_Code中类的静态成员 冬日糊辣汤 以前的面试题(二) 以前的面试题 SQL Server 2005新特性之感悟 招聘高级网页设计师(北京) 知识点滴(打油篇) Web Services 的设计和模式
C#设计模式之我见(四)Ⅰ
李明飞 · 2011-08-17 · via 博客园 - 李明飞

从今天开始讲行为型模式中的模版方法模式(Template Method)、命令模式(Command Pattern)、迭代器模式(Iterator Pattern)、观察者模式(Oberver Pattern)、中介者模式(Mediator Pattern)、备忘录模式(Memento Pattern)、解释器模式(Interpreter Pattern)、状态模式(State Pattern)、策略模式(Strategy Pattern)、职责链模式(Chain of Responsibility)、访问者模式(Visitor Pattern)。

下面我们介绍一下模版方法模式(Template Method)的定义和在什么情况下使用。
模板方法模式把我们不知道具体实现的步骤封装成抽象方法,提供一个按正确顺序调用它们的具体方法(这些具体方法统称为“模板方法”),这样构成一个抽象基类。子类通过继承这个抽象基类去实现各个步骤的抽象方法,而工作流程却由父类控制。模版方法中的方法可以分为两大类:模版方法(Template Method)和基本方法(Primitive Method)。
现在分析一个简单的实例:
namespace TemplateMethod.DesignPattern
{
    using System;
   
 class Algorithm 
       {
           public void DoAlgorithm() 
               {
                   Console.WriteLine("In DoAlgorithm");
                   Console.WriteLine("In Algorithm - DoAlgoStep1");
                
   Console.WriteLine("In Algorithm - DoAlgoStep2");   
                
   DoAlgoStep3();
                   Console.WriteLine("In Algorithm - DoAlgoStep4");
                
   DoAlgoStep5();
              }
          
virtual public void DoAlgoStep3()
             {
                  Console.WriteLine("In Algorithm - DoAlgoStep3");  
             }
 
        virtual public void DoAlgoStep5()
            {
                 Console.WriteLine("In Algorithm - DoAlgoStep5");   
            }
       }

   class CustomAlgorithm : Algorithm
      {
          public override void DoAlgoStep3()
              {
                  Console.WriteLine("In CustomAlgorithm - DoAlgoStep3");
              }
       
   public override void DoAlgoStep5()
              {
                  Console.WriteLine("In CustomAlgorithm - DoAlgoStep5");
              }
      }

    public class Client
        {
            public static int Main(string[] args)
                {
                     CustomAlgorithm c = new CustomAlgorithm(); 
                  
   c.DoAlgorithm();
         
            return 0;
               }
        }
}

阅读全文

posted @ 2011-08-17 16:41  李明飞  阅读(417)  评论()    收藏  举报