`
- 浏览:
269695 次
- 性别:
- 来自:
沈阳
-
意图
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
场景
模版方法是非常容易理解的设计模式,一来是因为它没有过多结构上的交错,二来是因为这种代码复用技术对于掌握OO知识的人来说非常容易可以想到,很可能你已经在很多地方运用了模版方法。在运用一些设计模式的时候常常也会一起运用模版方法,甚至有的设计模式本身就带有模版方法的思想。
今天,我们给出这样一个实际的例子。做过银行支付、支付宝支付的人都知道,一个支付的过程是基于两个接口的。提交接口和网关返回接口,虽然各大网关的支付接口格式不同,比如有的网关对于支付金额的参数是money,有的网关又是amount,但是从支付的提交过程来说,我们一般都会经历以下步骤:
l 获取订单信息,验证订单的合法性
l 生成用于提交到各大网关的表单
l 记录日志
l 把表单提交到相应的网关
对于各个网关,生成的提交表单以及记录日志的方式是不一样的,但是整个支付流程以及流程中的获取订单信息、提交表单的过程是一样的。由此引入模版方法模式来复用不变的部分,把可变的部分留给子类去实现。
code:
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();
}
}
}
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
设计模式(21)-Template Method Pattern 设计模式(20)-Visitor Pattern 设计模式(19)-Observer Pattern 设计模式(18)-Command Pattern 设计模式(17)-Chain of Responsibility Pattern 设计模式(16)...
C#设计模式是将这些通用解决方案应用于C#编程语言的具体实践。本文将深入探讨C#中的几种重要设计模式,并阐述它们的核心概念、应用场景以及如何在实际项目中有效地运用。 1. 单例模式(Singleton): 单例模式确保...
《C#设计模式PDF 电子书》是一本专注于C#编程语言中设计模式的应用和解析的书籍,2005年04版意味着它在设计模式领域的应用尚处于早期阶段,但仍然具有很高的学习价值。设计模式是软件工程中经过实践验证的、解决常见...
《C#设计模式》是一本深入探讨C#编程语言中设计模式的专业书籍,它涵盖了软件开发中的各种经典设计模式,旨在提升代码的可维护性、可扩展性和复用性。设计模式是经过时间考验的解决方案,是软件工程中的宝贵经验结晶...
C#设计模式是针对C#编程语言的特定设计模式应用,它们是经验丰富的开发者们在面对软件设计时总结出的一系列可重用解决方案。这里我们将深入探讨23个经典设计模式,并了解它们在C#中的应用。 1. 创建型模式:这类...
《C#经典设计模式及代码示例》是针对C#开发者深入理解并应用设计模式的一份宝贵资源。设计模式是软件工程中经过实践验证的、解决常见问题的有效模板,能够帮助程序员提高代码的可读性、可维护性和复用性。这本书结合...
根据提供的文档概览,我们可以对每个章节所涉及的设计模式进行详细的阐述和解释。下面将针对文档中提及的设计模式逐一展开,以便更好地理解这些模式的概念、结构、应用场景以及优缺点。 ### 1. 面向对象程序设计...
C#设计模式详解 本文档详细介绍了23种C#设计模式,包括创建型、结构型和行为型三个大类。这些设计模式是.NET进阶必备的知识,通过学习和掌握这些设计模式,可以提高程序员的设计和编码能力。 创建型设计模式 1. ...
C#设计模式是一种在软件开发过程中,为了应对特定问题或挑战而形成的可复用解决方案的模板。这些模式是经过时间考验、广泛接受并被社区认可的最佳实践,它们可以帮助开发者更高效地组织代码,提高代码的可读性、可...
本压缩包文件“c#设计模式源码例子”提供了一组C#实现的设计模式示例,通过分析这些源码,我们可以深入理解并掌握各种设计模式的精髓。 首先,我们来看看几种主要的设计模式类别:创建型、结构型和行为型模式。 1....
模板方法(Template Method) 14. 命令模式(Command Pattern) 15. 迭代器模式(Iterator Pattern) 16. 观察者模式(Observer Pattern) 17. 解释器模式(Interpreter Pattern) 18. 中介者模式(Mediator Pattern) 19. ...
再者,“行为型”设计模式关注对象之间的交互和责任分配,如策略模式(Strategy)、模板方法模式(Template Method)、观察者模式(Observer)、命令模式(Command)、迭代器模式(Iterator)、备忘录模式(Memento...
《C#设计模式(英文版)》是一本深入探讨C#编程中常用设计模式的专业书籍。设计模式是软件工程中的重要概念,它们是解决常见问题的成熟、可重用的解决方案,可以提升代码的可读性、可维护性和扩展性。这本书通过英文版...
《设计模式--基于C#的工程化实现及扩展》是一本深入探讨软件设计模式的书籍,作者王翔通过C#语言来阐述各种设计模式的原理、应用及其在实际工程中的扩展。这本书对于C#开发者来说,是提升软件设计能力的重要参考资料...
"C#23种设计模式【完整】_0520.rar"这个压缩包文件很可能包含了关于这23种设计模式的详细资料,旨在帮助开发者理解和应用这些模式。 设计模式可以分为三类:创建型、结构型和行为型。以下是对这23种设计模式的简要...
《C#设计模式》这本书是面向C#开发者的一份宝贵资源,它深入探讨了软件设计中的模式应用。设计模式是经过验证的、在特定情境下解决问题的通用解决方案,是软件开发人员之间的共同语言,能够提升代码质量、可读性和可...
《Visual Studio C# 设计模式》是一本深入探讨C#编程中设计模式应用的专业书籍,旨在帮助开发者理解和熟练运用各种经典的设计模式。设计模式是软件工程中的重要概念,它总结了在特定情境下解决问题的常见方法,为...
《设计模式--基于C#的工程化实现及扩展》是由王翔编著的一本深入探讨设计模式在C#和.NET平台应用的专业书籍。设计模式是软件工程中的宝贵经验总结,它们提供了解决常见问题的标准解决方案,是提升代码可读性、可维护...
《C#语言讲解的设计模式好书》是一套深入探讨C#设计模式的资源集合,包含多本电子书和代码示例。这套资料旨在帮助开发者理解并掌握如何在C#编程中应用设计模式,以提高软件的可维护性、扩展性和复用性。以下是这些...
C#设计模式是面向对象编程中的精华,它提供了一套标准的解决方案模板,帮助开发者在遇到特定问题时能够快速、有效地进行代码设计。本资源集合了一本超经典的教学材料,非常适合C#初学者或有经验的开发者进行自学。 ...