当前位置: 首页 > news >正文

网站开发零基础培训学校越影网站建设

网站开发零基础培训学校,越影网站建设,做门的网站建设,石龙建设网站1、模板方法模式 模板方法模式:定义一个操作中的算法骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 特点:通过把不变的行为搬移到超类,去除子类中重复的代…

1、模板方法模式

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

      特点:通过把不变的行为搬移到超类,去除子类中重复的代码来体现它的优势。

模板方法模式提供了一个很好的代码复用平台。当不变的和可变的行为在子类实现中混合在一起的时候,不变的行为就会在子类中重复出现。我们通过模板方法模式把这些行为搬移到单一的地方,这样就帮助子类摆脱重复的不变的行为的纠缠。

2、Net Core 读取的类型文件

      读取不同类型文件的代码

 //读取JSONConfigurationBuilder builder = new ConfigurationBuilder();builder.AddJsonFile("configuration.json");var config = builder.Build();var collections = config.AsEnumerable();//读取INIConfigurationBuilder builder = new ConfigurationBuilder();builder.AddIniFile("configuration.ini");var config = builder.Build();var collections = config.AsEnumerable();//读取XMLConfigurationBuilder builder = new ConfigurationBuilder();builder.AddXmlFile("configuration.xml");var config = builder.Build();var collections = config.AsEnumerable();

如上代码:如果不使用模板方法模式,定义读取文件基类,子类中重写读取方法,如下代码

 //定义读取文件的基类public abstract class AFileRead{public abstract void Read(string path);}//定义读取JSON文件的子类public class FileReadJson:AFileRead{public override void Read(string path){ConfigurationBuilder builder = new ConfigurationBuilder();builder.AddJsonFile(path);var config = builder.Build();var collections = config.AsEnumerable();}}//定义读取INI文件的子类
public class FileReadIni : AFileRead
{public override void Read(string path){ConfigurationBuilder builder = new ConfigurationBuilder();builder.AddIniFile(path);var config = builder.Build();var collections = config.AsEnumerable();}
}
//定义读取XML文件的子类public class FileReadXml:AFileRead{public override void Read(string path){ConfigurationBuilder builder = new ConfigurationBuilder();builder.AddXmlFile(path);var config = builder.Build();var collections = config.AsEnumerable();}}

上述代码中,只有一行读取不同类型文件代码不同,其余代码都相同。这只是单独的一个读取文件的功能,代码量很小,如果是一个特别大的功能,代码过多,那么如果要更改的话,工作量也是很大的。

为了减少重复的代码,如何去解决这个问题?

       这个时候,模板方法模式,就起作用了。模板方法模式将子类中不变的行为定义到基类中,子类中只留下可变的行为,这样子类中就摆脱了重复代码的纠缠,代码如下:

//定义读取文件的接口
public interface IFileRead
{IEnumerable<KeyValuePair<string,string>> ReadFile();
}//定义读取文件,封装重复代码,将可变的行为延迟到子类中实现
public abstract class AFileRead : IFileRead
{public IEnumerable<KeyValuePair<string, string>> ReadFile(){ConfigurationBuilder builder = new ConfigurationBuilder();AddFile(builder);  var config = builder.Build();var collections = config.AsEnumerable();return collections;}//这个函数需要延迟到子类中去实现protected abstract IConfigurationBuilder AddFile(ConfigurationBuilder builder);
}
//读取JSON文件
public class ReadJsonFile : AFileRead
{protected override IConfigurationBuilder AddFile(ConfigurationBuilder builder){return builder.AddJsonFile("configuration.json");}
}
//读取XML文件
public class ReadXmlFile : AFileRead
{protected override IConfigurationBuilder AddFile(ConfigurationBuilder builder){return builder.AddXmlFile("configuration.xml");}
}
//读取Ini文件
public class ReadIniFile : AFileRead
{protected override IConfigurationBuilder AddFile(ConfigurationBuilder builder){return builder.AddIniFile("configuration.ini");}
}

总结: 模板方法模式,帮助我们封装了不变的行为,涉及到实现某些特定步骤时,就延迟到了子类中去实现,在更改某个读取文件的函数时,不会影响到其他读取文件的功能。

http://www.sczhlp.com/news/55729/

相关文章:

  • 腾讯云个人网站备案百度关键词怎么做
  • 哈尔滨 做网站公司哪家好51ppt模板
  • 微信音乐做mp3下载网站智能制造公司
  • 湖南商城网站建设网页设计心得体会50字
  • 网站制作的市场前景高度重视部门网站建设
  • 移动网站开发做一个简单网页wordpress中文标签件
  • ASMFD系列三:Linux平台安装AFD的实操
  • *(*(p+i)+j)
  • prometheus+grafana监控系统
  • 读书笔记:哈希簇表:数据库中的快递柜系统
  • 国展网站建设深圳石岩小学网站建设
  • 网站建设课程下载上海远东建筑设计院
  • 建设门户网站 业务模板无尺码精品产品
  • 外贸网站开发济南建设工程有限公司
  • 网站开发工具蜡笔小新服装设计手稿设计图
  • 做明星同款的网站携程网站开发
  • 想开发自己的网站wordpress 评论弹窗登陆
  • 南昌市科协网站软件培训内容
  • 如何做公司网站点击率高山西专业网站建设大全
  • 递归调用过程
  • 循环迭代详解
  • 武昌做网站公司大型电子商务网站开发
  • 网站建站平台开发服务青岛城乡建设局网站
  • 赣州市网站建设公司网站优化多少钱
  • 电商平台建站网站建设服务合同交印花税
  • espcms易思企业网站管理系广州互联网营销师培训
  • .net 网站开发教程哪个网站可以做视频播放器
  • 景德镇市场建设局网站宜昌商城网站建设
  • 制作汽车网站比较还做的调查网站
  • 文件指针是指针类型的变量