专栏首页大猪的笔记C#笔记:重构-模版模式

C#笔记:重构-模版模式

在重构中,我们需要对代码不同但是结构相同的函数进行合并。我们可以把函数中不同的步骤都封装成一个个不同的函数,然后作为抽象函数上移到父类,父类用统一的函数进行调用。子类用不同的代码来实现这些函数(多态)

举例:

 public class PrintHtml    {
        public void  PrinHT()
        {
            Console.WriteLine("我好帅<br>");
        }
    }
 
    public class PrintWord    {
        public void PrintWD()
        {
            Console.WriteLine("我好帅\\r\\n");
        }
}

这两个函数,都包含打印这个操作,但是内容却大相径庭。故而我们可以使用模版模式,将获取内容的方法做为抽象函数,交给子类实现。父类用统一的函数进行调用。

public abstract class Statement
    {
        public voidPrint()
        {
            Console.WriteLine(GetContent());
        }
        public abstract string GetContent();
    }
 
    public class PrintHtml:Statement
    {
        public override string GetContent()
        {
            return"我好帅<br>";
        }
    }
 
    public class PrintWord:Statement
    {
        public override string GetContent()
        {
            return"我好帅\\r\\n";
        }
}

调用时:

 PrintHtml ph = new PrintHtml();
           ph.Print();
 
           PrintWord pw = new PrintWord();
           pw.Print();

他们会打印不同的内容。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • C#笔记:反射的简单用法

    反射其实说白了就是,当你知道类的名字和位置。你可以在程序运行时直接创建实例调用它。没什么大不了的。

    超级大猪
  • C#笔记:Ueditor上传文件引入数据库

    项目下载:http://pan.baidu.com/s/1gd8aJvH 密码:qu4c

    超级大猪
  • C#笔记:RC6算法实现

    超级大猪
  • 23种设计模式详解(六)

    南风
  • Java开发中的23种设计模式详解(转)

                                      ——可复用面向对象软件的基础

    肖哥哥
  • Java开发中的23种设计模式详解

    结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

    用户5640963
  • (52) 抽象容器类 / 计算机程序的思维逻辑

    查看历史文章,请点击上方链接关注公众号。 从38节到51节,我们介绍的都是具体的容器类,上节我们提到,所有具体容器类其实都不是从头构建的,它们都继承了一些抽象容...

    swiftma
  • 如何站在使用者的角度来设计SDK-微信公众号开发SDK(消息处理)设计之抛砖引玉

    0.SDK之必备的基本素质 在项目中免不了要用到各种各样的第三方的sdk,在我现在的工作中就在公司内部积累了各种各样的的公共库(基于.net的,基于silver...

    blackheart
  • 建造者模式多产品情况反射实现

    前面在《重温设计模式之建造者模式(Builder)》中关于建造者模式的的介绍比较简单,代码只是实现了基本的模式,因为实际应用中不可能只考虑一个模式的,因此这里给...

    the5fire
  • Java面向对象之抽象类,接口

    抽象类: 含有抽象方法的类被声明为抽象类 抽象方法由子类去实现 含有抽象方法的类必须被声明为抽象类 抽象类被子类继承,子类(如果不是抽象类)必须重写抽象类中...

    二十三年蝉

扫码关注云+社区

领取腾讯云代金券