zoukankan      html  css  js  c++  java
  • C# 设计模式-模板方法模式

    一.介绍  

      模板方法模式(Template Pattern)。属于行为型模式。它定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

    二.实现

      一说到模板,就能想到这是个现有的,可以直接套用的东西。举个例子,我们去开车,不管开什么车,步骤都差不多,上车、插钥匙、踩油门,这就可以定义为一个模板,我们跟着这个模板去运作就好。这种情况下,可以用模板方法模式去处理。

    //抽象模板角色
    public abstract class Car
    {
        public virtual void DriveCar()
        {
            Method1();
            Method2();
            Method3();
        }
    
        public abstract void Method1();
        public void Method2() {
            Console.WriteLine("插钥匙");
        }
        public void Method3()
        {
            Console.WriteLine("踩油门");
        }
    
    }
    
    //具体模板角色
    public class Truck : Car
    {
        public override void Method1()
        {
            Console.WriteLine("进入货车");
        }
    }
    
    //具体模板角色
    public class Bus : Car
    {
        public override void Method1()
        {
            Console.WriteLine("进入巴士");
        }
    }
    
    //调用
    public static void Main(string[] args)
    {
        Car t1 = new Truck();
        t1.DriveCar();
        var t2 = new Bus();
        t2.DriveCar();
    }

      在上面实现中,具体子类重写了其中的方法,不难理解,因为模板也不能完全套用,具体实现时需要不同的操作。

    三.总结

      优点:

      1.实现了代码复用。

      2.能够灵活地应对子步骤的变化,符合开闭原则。

      缺点:

      1.因为引入了一个抽象类,如果具体实现过多的话,需要用户花更多时间去理清类之间的关系。

  • 相关阅读:
    编程算法
    JDBC连接MySQL数据库及演示样例
    CKEditor&ckfindtor
    从零開始开发Android版2048 (五) 撤销的实现
    TCP/IP之分层
    poj2239 Selecting Courses --- 二分图最大匹配
    英尺到米的换算
    概率dp ZOJ 3640
    Android应用程序注冊广播接收器(registerReceiver)的过程分析
    TsFltMgr.sys系统蓝屏的原因就在于QQ电脑管家!
  • 原文地址:https://www.cnblogs.com/shadoll/p/14329204.html
Copyright © 2011-2022 走看看