Net设计模式实例之模板方法模式(Template Mothed Pattern)(1)

简介:

一、模板方法模式简介(Brief Introduction

模板方法模式 (Template Method Pattern), 定义一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可以重定义算法的某些特定步骤。模板方法模式把不变行为搬移到超类,从而去除子类中的重复代码,实际上模板方法模式就是提供了一个代码复用平台。

二、解决的问题(What To Solve

        要完成在某一细节上层次一致的一个过程或一系列步骤,但个别步骤在更详细的层次上实现不同时,可以使用模版方法模式解决问题。

三、模板方法模式分析(Analysis

1、模板方法模式结构

抽象类 AbstractClass ,实现了一个模版方法,定义了一个算法框架,具体子类将重新定义 PrimitiveOperation1 PrimitiveOperation1 以实现一个算法的步骤。
子类 ConcreteClassA ConcreteClassB ,实现 PrimitiveOperation1 PrimitiveOperation1 以完成算法中与特定子类相关的步骤。

2、模板方法模式代码

1 、抽象模板类 AbstractClass 及其模板方法 TemplateMethod()
public  abstract class AbstractClass
{
    public abstract void  PrimitiveOperation1();
    public abstract void  PrimitiveOperation2();
 
    public void  TemplateMethod()
     {
         PrimitiveOperation1();
         PrimitiveOperation2();
        Console .WriteLine(" 模板方法执行完 " );
     }
}
 
2 、子类 ConcreteClassA ConcreteClassB 实现父类定义的抽象方法
public  class ConcreteClassA :AbstractClass
{
    public override void  PrimitiveOperation1()
     {
        Console .WriteLine(" 具体实现类 {0} 方法 1 实现 " ,this .GetType().Name);
     }
 
    public override void  PrimitiveOperation2()
     {
        Console .WriteLine(" 具体实现类 {0} 方法 2 实现 " this .GetType().Name);
     }
}
 
public  class ConcreteClassB :AbstractClass
{
    public override void  PrimitiveOperation1()
     {
        Console .WriteLine(" 具体实现类 {0} 方法 1 实现 " this .GetType().Name);
     }
 
    public override void  PrimitiveOperation2()
     {
        Console .WriteLine(" 具体实现类 {0} 方法 2 实现 " this .GetType().Name);
     }
}
 
3 、客户端代码
static  void Main (string [] args)
{
    AbstractClass  abstractClass = new ConcreteClassA ();
     abstractClass.TemplateMethod();
 
     abstractClass = new ConcreteClassB ();
     abstractClass.TemplateMethod();
 
    Console .ReadKey();
}
 

3、模板方法模式运行结果










本文转自 灵动生活 51CTO博客,原文链接:http://blog.51cto.com/smartlife/270970,如需转载请自行联系原作者

目录
相关文章
|
2月前
|
设计模式 缓存 安全
【设计模式】单例模式:确保类只有一个实例
【设计模式】单例模式:确保类只有一个实例
25 0
|
4月前
|
设计模式 算法 Java
行为型设计模式-策略模式(Strategy Pattern)
行为型设计模式-策略模式(Strategy Pattern)
|
5月前
|
设计模式 缓存
二十三种设计模式全面解析-代理模式(Proxy Pattern)详解:探索隐藏于背后的力量
二十三种设计模式全面解析-代理模式(Proxy Pattern)详解:探索隐藏于背后的力量
|
4月前
|
设计模式 算法
设计模式 - 行为型模式_ 访问者模式Visitor Pattern
设计模式 - 行为型模式_ 访问者模式Visitor Pattern
41 1
设计模式 - 行为型模式_ 访问者模式Visitor Pattern
|
4月前
|
设计模式 Java 应用服务中间件
设计模式 -结构型模式_门面模式(外观模式) Facade Pattern 在开源软件中的应用
设计模式 -结构型模式_门面模式(外观模式) Facade Pattern 在开源软件中的应用
37 1
|
4月前
|
设计模式 缓存 安全
设计模式 - 创建型模式_ 单例模式 Singleton Pattern
设计模式 - 创建型模式_ 单例模式 Singleton Pattern
40 0
|
29天前
|
设计模式 存储 Java
Java设计模式:解释一下单例模式(Singleton Pattern)。
`Singleton Pattern`是Java中的创建型设计模式,确保类只有一个实例并提供全局访问点。它通过私有化构造函数,用静态方法返回唯一的实例。类内静态变量存储此实例,对外仅通过静态方法访问。
16 1
|
2月前
|
设计模式 算法 Java
【设计模式】springboot3项目整合模板方法深入理解设计模式之模板方法(Template Method)
【设计模式】springboot3项目整合模板方法深入理解设计模式之模板方法(Template Method)
|
5月前
|
设计模式 Java
Java设计模式:什么是观察者模式(Observer Pattern)?
Java设计模式:什么是观察者模式(Observer Pattern)?
32 0
|
5月前
|
设计模式 自然语言处理 编译器
二十三种设计模式全面解析-解释器模式(Interpreter Pattern):用代码诠释语言的魅力
二十三种设计模式全面解析-解释器模式(Interpreter Pattern):用代码诠释语言的魅力