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

全国做的最棒的网站慧聪网郭凡生现状

全国做的最棒的网站,慧聪网郭凡生现状,app开发公司一个月可以赚多少钱,济宁那家做网站最好本文是我们名为“ Java设计模式 ”的学院课程的一部分。 在本课程中#xff0c;您将深入研究大量的设计模式#xff0c;并了解如何在Java中实现和利用它们。 您将了解模式如此重要的原因#xff0c;并了解何时以及如何应用模式中的每一个。 在这里查看 #xff01; 目录 … 本文是我们名为“ Java设计模式 ”的学院课程的一部分。 在本课程中您将深入研究大量的设计模式并了解如何在Java中实现和利用它们。 您将了解模式如此重要的原因并了解何时以及如何应用模式中的每一个。 在这里查看 目录 1.责任链模式 2.什么是责任链模式 3.落实责任链 4.何时使用责任链模式 5. JDK中的责任链 6.下载源代码 1.责任链模式 责任链模式是一种行为模式其中一组对象按顺序链接在一起并提供一个责任请求以便由该组进行处理。 如果组中的对象可以处理特定的请求它可以处理并返回相应的响应。 否则它将请求转发到组中的后续对象。 对于现实生活中的场景为了理解这种模式假设您有一个要解决的问题。 如果您能够自己处理则可以这样做否则您将告诉您的朋友解决该问题。 如果他能够解决那么他会做到或者还将其转发给其他朋友。 该问题将被转发直到您的一个朋友解决了该问题或者您的所有朋友都看到了问题但是没有人能够解决它在这种情况下问题仍然没有解决。 让我们解决一个现实生活中的场景。 您的公司已获得一份合同向一家卫生公司提供分析应用程序。 该应用程序将告诉用户特定的健康问题其病史治疗方法药物对患有该疾病的人的采访等以及了解该疾病所需要的一切。 为此您的公司会收到大量数据。 数据可以是任何格式可以是文本文件doc文件excel音频图像视频以及任何您能想到的东西。 现在您的工作就是将这些数据保存在公司的数据库中。 用户将以任何格式提供数据并且您应该为他们提供一个界面以将数据上传到数据库中。 用户对了解如何保存不同的非结构化数据不感兴趣甚至不知道。 这里的问题是您需要开发不同的处理程序以保存各种格式的数据。 例如文本文件保存处理程序不知道如何保存mp3文件。 要解决此问题您可以使用“责任链”设计模式。 您可以创建不同的对象以处理不同的数据格式并将它们链接在一起。 当请求到达单个对象时它将检查是否可以处理和处理特定的文件格式。 如果可以它将进行处理。 否则它将转发到链接到它的下一个对象。 这种设计模式还使用户与正在处理请求的对象脱钩。 用户不知道哪个对象实际上正在为其请求提供服务。 解决问题之前首先让我们进一步了解责任链设计模式。 2.什么是责任链模式 这种模式的目的是通过给多个对象一个处理请求的机会避免将请求的发送者耦合到其接收者。 我们将接收的对象链接起来并将请求沿着链接传递直到一个对象处理它为止。 这种模式是关于在通知链中连接对象的。 当通知沿链传送时它由设置为处理特定通知的第一个对象处理。 当有多个对象可以处理或满足客户请求时该模式建议为这些对象中的每一个提供按顺序处理请求的机会。 在这种情况下应用模式这些潜在处理程序中的每一个都可以以链的形式排列每个对象都引用链中的下一个对象。 链中的第一个对象接收请求并决定处理该请求或将其传递给链中的下一个对象。 该请求一个接一个地流经链中的所有对象直到该请求由链中的一个处理程序处理或者该请求到达链的末尾而没有得到处理。 图1 处理程序 定义用于处理请求的接口。 可选实现后继链接。 混凝土处理机 处理要求它负责的请求。 可以访问其后继者。 如果ConcreteHandler可以处理请求则可以处理 否则它将请求转发给其后继者。 客户 向链上的ConcreteHandler对象发起请求。 当客户端发出请求时请求将沿着链传播直到ConcreteHandler对象负责处理该请求。 3.落实责任链 为了实现责任链以解决上述问题我们将创建一个接口Handler。 package com.javacodegeeks.patterns.chainofresponsibility;public interface Handler {public void setHandler(Handler handler);public void process(File file);public String getHandlerName(); } 上面的接口包含两个主要方法 setHandler和process方法。 setHandler用于设置链中的下一个处理程序。 仅当处理程序能够处理请求时才使用process方法处理请求。 可选我们具有getHandlerName方法该方法用于返回处理程序的名称。 处理程序旨在处理包含数据的文件。 具体的处理程序通过检查文件类型来检查是否能够处理文件否则转发到链中的下一个处理程序。 File类如下所示。 package com.javacodegeeks.patterns.chainofresponsibility;public class File {private final String fileName;private final String fileType;private final String filePath;public File(String fileName, String fileType, String filePath){this.fileName fileName;this.fileType fileType;this.filePath filePath;}public String getFileName() {return fileName;}public String getFileType() {return fileType;}public String getFilePath() {return filePath;}} File类创建简单的文件对象其中包含文件名文件类型和文件路径。 处理程序将使用文件类型来检查文件是否可以被处理程序处理。 如果处理程序可以它将处理并保存它或者将其转发到链中的下一个处理程序。 现在让我们来看一些具体的处理程序。 package com.javacodegeeks.patterns.chainofresponsibility;public class TextFileHandler implements Handler {private Handler handler;private String handlerName;public TextFileHandler(String handlerName){this.handlerName handlerName;}Overridepublic void setHandler(Handler handler) {this.handler handler;}Overridepublic void process(File file) {if(file.getFileType().equals(text)){System.out.println(Process and saving text file... by handlerName);}else if(handler!null){System.out.println(handlerName fowards request to handler.getHandlerName());handler.process(file);}else{System.out.println(File not supported);}}Overridepublic String getHandlerName() {return handlerName;} } TextFileHandler用于处理文本文件。 它实现Handler接口并覆盖其三个方法。 它拥有对链中下一个处理程序的引用。 在process方法中它检查文件类型是否为文本对其进行处理或将其转发给下一个处理程序。 其他处理程序与上述处理程序类似。 package com.javacodegeeks.patterns.chainofresponsibility;public class DocFileHandler implements Handler{private Handler handler;private String handlerName;public DocFileHandler(String handlerName){this.handlerName handlerName;}Overridepublic void setHandler(Handler handler) {this.handler handler;}Overridepublic void process(File file) {if(file.getFileType().equals(doc)){System.out.println(Process and saving doc file... by handlerName);}else if(handler!null){System.out.println(handlerName fowards request to handler.getHandlerName());handler.process(file);}else{System.out.println(File not supported);}}Overridepublic String getHandlerName() {return handlerName;}}package com.javacodegeeks.patterns.chainofresponsibility;public class AudioFileHandler implements Handler {private Handler handler;private String handlerName;public AudioFileHandler(String handlerName){this.handlerName handlerName;}Overridepublic void setHandler(Handler handler) {this.handler handler;}Overridepublic void process(File file) {if(file.getFileType().equals(audio)){System.out.println(Process and saving audio file... by handlerName);}else if(handler!null){System.out.println(handlerName fowards request to handler.getHandlerName());handler.process(file);}else{System.out.println(File not supported);}}Overridepublic String getHandlerName() {return handlerName;}}package com.javacodegeeks.patterns.chainofresponsibility;public class ExcelFileHandler implements Handler{private Handler handler;private String handlerName;public ExcelFileHandler(String handlerName){this.handlerName handlerName;}Overridepublic void setHandler(Handler handler) {this.handler handler;}Overridepublic void process(File file) {if(file.getFileType().equals(excel)){System.out.println(Process and saving excel file... by handlerName);}else if(handler!null){System.out.println(handlerName fowards request to handler.getHandlerName());handler.process(file);}else{System.out.println(File not supported);}}Overridepublic String getHandlerName() {return handlerName;} }package com.javacodegeeks.patterns.chainofresponsibility;public class ImageFileHandler implements Handler {private Handler handler;private String handlerName;public ImageFileHandler(String handlerName){this.handlerName handlerName;}Overridepublic void setHandler(Handler handler) {this.handler handler;}Overridepublic void process(File file) {if(file.getFileType().equals(image)){System.out.println(Process and saving image file... by handlerName);}else if(handler!null){System.out.println(handlerName fowards request to handler.getHandlerName());handler.process(file);}else{System.out.println(File not supported);}}Overridepublic String getHandlerName() {return handlerName;}}package com.javacodegeeks.patterns.chainofresponsibility;public class VideoFileHandler implements Handler {private Handler handler;private String handlerName;public VideoFileHandler(String handlerName){this.handlerName handlerName;}Overridepublic void setHandler(Handler handler) {this.handler handler;}Overridepublic void process(File file) {if(file.getFileType().equals(video)){System.out.println(Process and saving video file... by handlerName);}else if(handler!null){System.out.println(handlerName fowards request to handler.getHandlerName());handler.process(file);}else{System.out.println(File not supported);}}Overridepublic String getHandlerName() {return handlerName;} } 现在让我们测试上面的代码。 package com.javacodegeeks.patterns.chainofresponsibility;public class TestChainofResponsibility {public static void main(String[] args) {File file null;Handler textHandler new TextFileHandler(Text Handler);Handler docHandler new DocFileHandler(Doc Handler);Handler excelHandler new ExcelFileHandler(Excel Handler);Handler audioHandler new AudioFileHandler(Audio Handler);Handler videoHandler new VideoFileHandler(Video Handler);Handler imageHandler new ImageFileHandler(Image Handler);textHandler.setHandler(docHandler);docHandler.setHandler(excelHandler);excelHandler.setHandler(audioHandler);audioHandler.setHandler(videoHandler);videoHandler.setHandler(imageHandler);file new File(Abc.mp3, audio, C:);textHandler.process(file);System.out.println(---------------------------------);file new File(Abc.jpg, video, C:);textHandler.process(file);System.out.println(---------------------------------);file new File(Abc.doc, doc, C:);textHandler.process(file);System.out.println(---------------------------------);file new File(Abc.bat, bat, C:);textHandler.process(file);}} 上面的程序将具有以下输出。 Text Handler fowards request to Doc Handler Doc Handler fowards request to Excel Handler Excel Handler fowards request to Audio Handler Process and saving audio file... by Audio Handler --------------------------------- Text Handler fowards request to Doc Handler Doc Handler fowards request to Excel Handler Excel Handler fowards request to Audio Handler Audio Handler fowards request to Video Handler Process and saving video file... by Video Handler --------------------------------- Text Handler fowards request to Doc Handler Process and saving doc file... by Doc Handler --------------------------------- Text Handler fowards request to Doc Handler Doc Handler fowards request to Excel Handler Excel Handler fowards request to Audio Handler Audio Handler fowards request to Video Handler Video Handler fowards request to Image Handler File not supported 在上面的示例中首先我们创建了不同的处理程序并将它们链接在一起。 该链从用于处理文本文件的文本处理程序开始一直到文档处理程序等等直到最后一个处理程序即图像处理程序。 然后我们创建了不同的文件对象并将其传递给文本处理程序。 如果文件可以由文本处理程序处理则执行该操作否则将文件转发到下一个链接的处理程序。 您可以在输出中看到链接的对象如何转发请求的文件直到到达适当的处理程序为止。 另外请注意我们尚未创建处理程序来处理bat文件。 因此它通过所有处理程序并产生输出–“不支持文件”。 客户端代码与提供的对象分离。 它仅发送请求并且该请求由链中的任何处理程序处理或者在有支持的情况下不进行处理。 4.何时使用责任链模式 在以下情况下使用责任链 多个对象可以处理一个请求并且处理程序不是先验的。 处理程序应自动确定。 您要向多个对象之一发出请求而无需显式指定接收者。 应该动态指定可以处理请求的对象集。 5. JDK中的责任链 以下是Java中的责任链模式的用法。 java.util.logging.Logger#log() javax.servlet.Filter#doFilter() 6.下载源代码 这是“责任链模式”的一课。 您可以在此处下载源代码 ChainofResponsibility-Project 翻译自: https://www.javacodegeeks.com/2015/09/chain-of-responsibility-design-pattern-2.html
http://www.huolong8.cn/news/146858/

相关文章:

  • 怎么用esc服务器做网站手机网站打不开是什么原因造成的
  • 哪个网站做系统好江苏推广网站建设业务
  • 濮阳网站建设哪家好wordpress如何加视频
  • 网站找人做备案的价格注册建设通网站
  • 建设安全协会网站如何用wordpress建一个网站
  • 网站域名被黑wordpress isset
  • 仿京东网站后台企业建设网站目的是什么意思
  • 学校网站管理wordpress获取指定图片大小
  • 关于服装的商务网站建设策划书做二手网站
  • 建站之星怎么安装google seo优化
  • wordpress 内部链接网站建设优化工资高不
  • 深圳网站建设艺之都企业注册网上申请入口
  • 广州微网站建设市场外贸营销型网站制作
  • 教育网站网址产品设计考研学校
  • 如何在人力资源网站做合同续签wordpress 改为中文
  • 百度站长平台官网登录入口桂林漓江风景图片
  • 免费个人建站空间wordpress消除
  • 番禺电商网站建设平面图设计软件app
  • 做追星网站效果图好看的网站页面设计
  • 个人备案做视频网站3d效果图制作公司
  • 易乐自助建站东莞外贸公司建网站
  • uehtml 网站源码湖南长沙网站建设公司
  • 嘉兴市南湖区城乡规划建设局网站个人网站备案模板
  • 湖北省建设交易协会网站广州易网网站建设
  • 固定ip 建网站沈阳男科医院哪家口碑好
  • 建设银行园区公积金管理中心网站游戏公司官方网站建设方案
  • php企业网站源代码网站总是跳转dede58
  • 顺德网站建设信息建设网站对公司起什么作用
  • 网站如何做搜狗搜索引擎住房城乡建设网站
  • 支付宝手机网站支付二维码怎么做企业网站建设的公司价格