zoukankan      html  css  js  c++  java
  • TemplateMethod模式

    Template Method模式的几个角色:

    基类角色:定义的抽象方法、纯虚方法(一般设置为protected),Template方法(是对抽象方法、纯虚方法包装).
    子类角色:重写基类抽象方法、纯虚方法.
    客户端角色:调用子类中的重写过的方法.

    演示代码如下:

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Collections;
    namespace TemplateMethod
    {
        
    class Program
        
    {
            
    public abstract class Computer //表示电脑(基类角色)
            {
                
    protected abstract void Start();
                
    protected abstract void Close();

                
    public void TemplateMethod()//Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

                
    {
                    Start();
    //开电脑
                    Close();//关闭电脑 

                }

            }


            
    //子类角色
            public class Lenovo : Computer //我上班用的联想电脑
            {
                
    protected override void Start()
                
    {
                    Console.WriteLine(
    "上班了把联想电脑打开");

                }


                
    protected override void Close()
                
    {
                    Console.WriteLine(
    "下班了把联想电脑关闭");
                }


             
            }

            
            
    public class ComputerTest
            
    {
                
    public static void DoTest(Computer cp) //早上上班要打开电脑测试
                {

                    cp.TemplateMethod();

                }

            }


            
    //客户端角色
            public static void Main()
            
    {
               ComputerTest.DoTest(
    new Lenovo());//早上上班要打开我的联想电脑
               
    //Computer test=new Lenovo();
               
    //ComputerTest.DoTest(test);
            }


        }

    }



    Template Method模式的实质就是在基类定义一个Template 再在子类中重写Template中的具体方法,以便客户端访问.
  • 相关阅读:
    [转]项目管理---敏捷开发思想---带来相当愉快的项目开发过程
    [转] 项目管理---项目经理如何应对客户的需求变更?
    [转]C# 线程知识--使用Task执行异步操作
    [转]细说ASP.NET的各种异步操作
    [转]oracle表分区详解
    解决Asp.net 部署后弹出登陆框
    SVN客户端TortoiseSVN安装配置图文教程
    .net版本区别及发展历程
    CLR via c#读书笔记九:字符、字符串和文本处理
    CLR via c#读书笔记九:接口
  • 原文地址:https://www.cnblogs.com/xiaobaigang/p/911018.html
Copyright © 2011-2022 走看看