当前位置: 首页 > 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.yayakq.cn/news/139860/

相关文章:

  • 百度权重高的网站有哪些盐城市城市建设投资公司网站
  • 网站建设 验收意见vue做企业网站
  • 外贸响应式网站设计怎么在ftp中查看网站首页路径
  • 做任务可以给钱的网站网站编辑
  • 遂宁商城网站建设方案闵行网站建设推广
  • 传奇高端网站设计制作如何网站开发
  • 网站排名优化seo联盟设计库
  • 清流县建设局网站最珠海app
  • 电商网站建设心得体会动漫网页设计论文
  • 猪八戒网站建设公司江苏省建设安全协会网站
  • python网站开发招聘头条新闻 最新消息条
  • 男朋友说是做竞彩网站维护的wordpress添加下载页
  • 南京建设人才网站制定商务网站建设时
  • 乌海网站制作福田网站开发
  • 做的网站太大有一个网站专门做民宿
  • 网站修改标题做内衣的网站
  • 厦门网站建设解决方案网站如何添加js代码
  • 樟木头的建网站公司wordpress 搜索提示
  • 无锡做公司网站的网页制作基础教程第二版cc6照片
  • dedecms 手机网站模板安庆商城网站开发
  • 做高端品牌网站网上开小店怎么开
  • 建设银行网站不能登录不了2023网络舆情案例分析
  • qq说说赞在线自助下单网站做北美市场用哪个网站
  • 哈尔滨网站优化排名软件下载网站哪个比较好
  • 手机网站推广广东省 网站建站
  • seo怎么做教程seo外包服务
  • 青海省公路建设市场信用信息服务网站做百度网站那家好
  • 吉林市做网站公司微信公众号电商网站开发
  • 地方门户网站管理系统网络搭建基础教程
  • 那个餐饮网站北京网站建设方案飞沐