模板方法模式

定义:定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变算法的结构即可重定义该算法的某些特定步骤。


抽象父类(AbstractClass):实现了模板方法,定义了算法的骨架。

具体类(ConcreteClass):实现抽象类中的抽象方法,即不同的对象的具体实现细节。具体类(ConcreteClass):实现抽象类中的抽象方法,即不同的对象的具体实现细节。

namespace ConsoleApp1
{

    public abstract class Bank
    {
        // 模版方法(具体的整个过程)
        public void templateMethod() {
            takeNumber();
            process();
            evaluate();
        }
        // 取号
        public void takeNumber() {
            Console.WriteLine("取号");
        }
        // 业务
        public abstract void process();
        // 评分
        public void evaluate()
        {
            Console.WriteLine("评价");
        }

    }

    // 具体业务
    public class Deposit : Bank
    {
        public override void process()
        {
            Console.WriteLine("存款");
        }
    }

    public class Withdraw : Bank
    {
        public override void process()
        {
            Console.WriteLine("取款");
        }
    }

    public class Transfer : Bank
    {
        public override void process()
        {
            Console.WriteLine("转账");
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Bank bank = new Deposit();
            bank.templateMethod();

            bank = new Withdraw();
            bank.templateMethod();
        }
    }
}

相关推荐

  1. 设计模式-模板方法模式

    2024-04-03 02:46:03       67 阅读
  2. 【设计模式模板方法模式

    2024-04-03 02:46:03       54 阅读
  3. 设计模式——模板方法模式

    2024-04-03 02:46:03       61 阅读
  4. 设计模式: 模板方法模式

    2024-04-03 02:46:03       44 阅读
  5. 设计模式---模板方法模式

    2024-04-03 02:46:03       32 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-03 02:46:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-03 02:46:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-03 02:46:03       87 阅读
  4. Python语言-面向对象

    2024-04-03 02:46:03       96 阅读

热门阅读

  1. 我的创作纪念日

    2024-04-03 02:46:03       32 阅读
  2. 2024.4.2

    2024-04-03 02:46:03       36 阅读
  3. 全球化智能组网产品优势

    2024-04-03 02:46:03       37 阅读
  4. pyqt5 无边框窗口拖动

    2024-04-03 02:46:03       34 阅读
  5. 前端开发语言有哪些

    2024-04-03 02:46:03       41 阅读
  6. Spring OAuth2 Resource Server 配置

    2024-04-03 02:46:03       44 阅读
  7. Spring-01

    Spring-01

    2024-04-03 02:46:03      27 阅读
  8. 【nosql-redis】关于持久化的补充

    2024-04-03 02:46:03       34 阅读
  9. 关于投标的细节

    2024-04-03 02:46:03       38 阅读
  10. Nginx 配置,自定义日志格式 log_format

    2024-04-03 02:46:03       44 阅读