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

重庆建网站有哪些咨询管理

重庆建网站有哪些,咨询管理,网站注册系统源码,怎么建设电影网站文章目录 简介场景解决代码关键优化点 总结 简介 模板方法是一种行为设计模式#xff0c;它在超类中定义了一个算法的框架#xff0c;允许子类在不修改结构的情况下重写算法的特定步骤。 场景 假如你正在开发一款分析文档的数据挖掘程序。用户需要向程序输入各种格式… 文章目录 简介场景解决代码关键优化点 总结 简介 模板方法是一种行为设计模式它在超类中定义了一个算法的框架允许子类在不修改结构的情况下重写算法的特定步骤。 场景 假如你正在开发一款分析文档的数据挖掘程序。用户需要向程序输入各种格式PDF、DOC 或 CSV的文档程序会试图从这些文件中提取有意义的数据再以统一的格式返回给用户。 程序的首个版本只支持 DOC 文件。下个版本程序需要支持 CSV 文件。一个月后程序又需要从 PDF 文件中抽取数据。 一段时间后你发现这三个类中包含许多相似代码。尽管读取不同格式数据的代码完全不同但数据处理和分析的代码却几乎完全一样。怎么在保持算法结构完整的情况下去除重复代码这是第一个问题。 还有另一个与使用这些类的客户端代码相关的问题客户端代码中包含许多条件语句因为它要根据不同的文档类型选择合适的处理过程。 如果所有处理数据的类都有相同的接口或基类那你就可以去除客户端代码里的条件语句转而使用多态机制来调用处理对象的方法。 解决 模板方法模式建议把算法分解为一系列步骤然后将这些步骤改写为方法最后在“模板方法”中依次调用这些方法。步骤可以是抽象的也可以有一些默认的实现。为了能够使用算法客户端需要自己提供子类并且实现所有的抽象步骤。可能还需重写一些步骤但这一步中不包括模板方法自身。 让我们想想怎么在数据挖掘程序里运用这样的方案。我们可为三个解析算法创建一个基类这个类定义了一个模板方法-mine方法这个方法会在内部调用不同的文档处理步骤。 首先我们将所有步骤声明为抽象类型强制要求子类自行实现这些方法。在我们的例子里子类已经实现了必须的方法因此我们只需调整这些方法的名称让他跟超类的方法匹配就行了。 现在让我们看看怎么去除子类里的重复代码。对于不同的文件格式打开和关闭文件以及读取解析数据的代码都不同所以不需要修改这些方法。但分析原始数据和生成报告等其他步骤的实现方式非常相似所以可以把他们提取到基类里让子类共享这些代码。 所以我们有两种类型的步骤 抽象步骤必须由各个子类来实现可选步骤已经有一些默认实现但你仍然可以在需要时进行重写 还有另一种名为钩子 hook 的步骤。钩子是内容为空的可选的步骤。即使子类不重写钩子模板方法也能工作。钩子通常放置在算法重要步骤的前后为子类提供额外的算法扩展点。 代码 // 抽象类定义模板方法 abstract class DataMiner {// 模板方法不可被覆盖public final void processDocument() { openDocument();extractRawData();parseData(); // 抽象步骤analyzeData(); // 通用实现generateReport(); // Hook方法}// 文档打开基础实现protected void openDocument() { System.out.println(打开文档...);}// 数据抽取基础实现protected void extractRawData() { System.out.println(抽取原始数据...);}// 解析算法必须子类实现protected abstract void parseData(); // 通用分析实现protected void analyzeData() { System.out.println(执行数据聚类分析...);}/* 钩子方法可选覆盖 */protected void generateReport() { System.out.println(生成基础统计报表);} }// 具体子类实现 class PDFDataMiner extends DataMiner {Overrideprotected void parseData() { // 实现特定解析逻辑System.out.println(解析PDF版式结构);System.out.println(提取PDF文本流);} }class CSVDataMiner extends DataMiner {Overrideprotected void parseData() { System.out.println(识别CSV分隔符);System.out.println(映射CSV字段);}Overrideprotected void generateReport() { // 自定义Hook实现super.generateReport();System.out.println(追加CSV格式验证结果);} }// 客户端调用示例 class Client {public static void main(String[] args) {System.out.println(处理PDF文档);DataMiner pdfProcessor new PDFDataMiner();pdfProcessor.processDocument(); // 执行完整流程System.out.println(\n处理CSV文档);DataMiner csvProcessor new CSVDataMiner();csvProcessor.processDocument();} }关键优化点 固定流程不可重写的processDocument()确保流程一致职责分离各子类仅需实现格式相关解析逻辑扩展能力通过钩子方法实现可选扩展如CSV格式验证 总结 抽象类Abstract­Class会声明算法步骤的方法step1step2…以及依次调用它们的模板方法(templateMethod)。算法步骤可以被声明为抽象类型也可以提供一些默认实现。具体类Con­crete­Class可以重写所有步骤但不能重写模板方法自身。
http://www.zqtcl.cn/news/755663/

相关文章:

  • 高级网站设计效果图网站设计制作哪些
  • 惠山区住房和建设厅网站营销推广方式都有哪些
  • 做网贷网站多少钱wordpress首页短代码
  • 网站网格湖南网页
  • 做网站的知名品牌公司用ps切片做网站
  • 中学网站模板下载番禺外贸网站建设
  • 常州网站seo代理加盟郑州浩方网站建设智联招聘
  • 小型网站制作网站开发做什么费用
  • seo网站论文社交app开发公司
  • 企业宣传网站建设图示《高性能网站建设》
  • 福州志愿者官方网站怎么做erp管理系统介绍
  • 高端网站建设费用情况广州开发区控股集团有限公司
  • 精湛的网站设计云南网招聘
  • 南昌网站建设公司行情Wordpress添加分页按钮
  • 论坛网站建设流程wordpress速度优化插件
  • PHP套模板做网站建设银行保定分行网站
  • 怎样免费注册网站域名wordpress网站回调域
  • 东莞个人免费建网站乐清网约车事件
  • 备案查询网站网站的登录弹窗怎么做
  • 网站开发 mvc北京建设工程主管部门网站
  • 淮安建设机械网站制作代理公司注册需要多少钱
  • 站长收录茌平建设局网站
  • 如何进行网站开发开发区人才
  • 网站制作 视频网站维护的主要内容包括
  • 快速企业建站深圳网站关键词优化推广
  • 如何开网店详细步骤东莞市网络seo推广
  • 个人可以做哪些有意思的网站网站和网站的app
  • 北京高端网站开发公司网站建设后台实训体会
  • 青岛海川建设集团有限公司网站wordpress 变私有云
  • 网站备案人可以改吗石大网页设计与网站建设客观题