program.cs

来自「GOF23种设计模式详细例子!附有详细的代码噢!」· CS 代码 · 共 60 行

CS
60
字号
using System;
using System.Collections.Generic;
using System.Text;

namespace TemplateMethodExample
{
    class Program
    {
        static void Main(string[] args)
        {
            PayGateway pg = new IPSGateway();
            pg.SubmitOrder(new Order());
        }
    }

    class Order
    {
    }

    class SubmitForm
    {
    }

    abstract class PayGateway
    {
        protected abstract void WriteLog(SubmitForm sf);
        protected abstract SubmitForm GenerateOrderForm(Order order);

        public void SubmitOrder(Order order)
        {
            if (order == null)
            {
                Console.WriteLine("Invalid Order");
                return;
            }
            SubmitForm sf = GenerateOrderForm(order);
            if (sf == null)
            {
                Console.WriteLine("Generate Submit Form Failed");
                return;
            }
            WriteLog(sf);
        }
    }

    class IPSGateway : PayGateway
    {
        protected override void WriteLog(SubmitForm sf)
        {
            Console.WriteLine("Log Wrote");
        }

        protected override SubmitForm GenerateOrderForm(Order order)
        {
            Console.WriteLine("Submit Form Generated");
            return new SubmitForm();
        }
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?