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

什么网站可以做TCGA病理分期漳州本地网

什么网站可以做TCGA病理分期,漳州本地网,关于申请网站建设经费的报告,高端营销型网站制作Go和Java实现访问者模式 我们下面通过一个解压和压缩各种类型的文件的案例来说明访问者模式的使用。 1、访问者模式 在访问者模式中#xff0c;我们使用了一个访问者类#xff0c;它改变了元素类的执行算法。通过这种方式#xff0c;元素的执行算法可以随 着访问者改变而…Go和Java实现访问者模式 我们下面通过一个解压和压缩各种类型的文件的案例来说明访问者模式的使用。 1、访问者模式 在访问者模式中我们使用了一个访问者类它改变了元素类的执行算法。通过这种方式元素的执行算法可以随 着访问者改变而改变。这种类型的设计模式属于行为型模式。根据模式元素对象已接受访问者对象这样访问者 对象就可以处理元素对象上的操作。 意图主要将数据结构与数据操作分离。 主要解决稳定的数据结构和易变的操作耦合问题。 何时使用需要对一个对象结构中的对象进行很多不同的并且不相关的操作而需要避免让这些操作污染这 些对象的类使用访问者模式将这些封装到类中。 如何解决在被访问的类里面加一个对外提供接待访问者的接口。 关键代码在数据基础类里面有一个方法接受访问者将自身引用传入访问者。 应用实例您在朋友家做客您是访问者朋友接受您的访问您通过朋友的描述然后对朋友的描述做出一 个判断这就是访问者模式。 优点1、符合单一职责原则。 2、优秀的扩展性。 3、灵活性。 缺点1、具体元素对访问者公布细节违反了迪米特原则。 2、具体元素变更比较困难。 3、违反了依赖倒 置原则依赖了具体类没有依赖抽象。 使用场景1、对象结构中对象对应的类很少改变但经常需要在此对象结构上定义新的操作。 2、需要对一 个对象结构中的对象进行很多不同的并且不相关的操作而需要避免让这些操作污染这些对象的类也不希 望在增加新操作时修改这些类。 注意事项访问者可以对功能进行统一可以做报表、UI、拦截器与过滤器。 适用性 一个对象结构包含很多类对象它们有不同的接口而你想对这些对象实施一些依赖于其具体类的操作。 需要对一个对象结构中的对象进行很多不同的并且不相关的操作让你想避免让这些操作污染这些对象的类。 Visitor使得你可以将相关的操作集中起来定义在一个类中当该对象结构被很多应用共享时用Visitor模 式让每个应用仅包含需要用到的操作。 定义对象结构的类很少改变但经常需要在此结构上定义新的操作。改变对象结构类需要重定义对所有访问者 的接口这可能想要很大的代价。如果对象结构类经常改变那么可能还是在这些类中定义这些操作较好。 2、Go实现访问者模式 package visitor// 访问者FileUseVisitor type FileUseVisitor interface {// 为每一个类声明一个visit操作visitPdfFile(FileResourceVisitable)visitPPTFile(FileResourceVisitable)visitTextFile(FileResourceVisitable) }package visitorimport fmt// 访问者Compress type Compress struct { }func (compress *Compress) visitPdfFile(fileResourceVisitable FileResourceVisitable) {fmt.Println(Compress file: fileResourceVisitable.(*PdfFile).Path) }func (compress *Compress) visitPPTFile(fileResourceVisitable FileResourceVisitable) {fmt.Println(Compress file: fileResourceVisitable.(*PPTFile).Path) }func (compress *Compress) visitTextFile(fileResourceVisitable FileResourceVisitable) {fmt.Println(Compress file: fileResourceVisitable.(*TextFile).Path) }package visitorimport fmt// 访问者Decompress type Decompress struct { }func (decompress *Decompress) visitPdfFile(fileResourceVisitable FileResourceVisitable) {fmt.Println(Decompress file: fileResourceVisitable.(*PdfFile).Path) }func (decompress *Decompress) visitPPTFile(fileResourceVisitable FileResourceVisitable) {fmt.Println(Decompress file: fileResourceVisitable.(*PPTFile).Path) }func (decompress *Decompress) visitTextFile(fileResourceVisitable FileResourceVisitable) {fmt.Println(Decompress file: fileResourceVisitable.(*TextFile).Path) }package visitor// 接收者FileResourceVisitable type FileResourceVisitable interface {accept(FileUseVisitor) }package visitor// 接收者PdfFile type PdfFile struct {Path string }func (pdfFile *PdfFile) accept(fileUseVisitor FileUseVisitor) {fileUseVisitor.visitPdfFile(pdfFile) }package visitor// 接收者PPTFile type PPTFile struct {Path string }func (pPTFile *PPTFile) accept(fileUseVisitor FileUseVisitor) {fileUseVisitor.visitPPTFile(pPTFile) }package visitor// 接收者TextFile type TextFile struct {Path string }func (textFile *TextFile) accept(fileUseVisitor FileUseVisitor) {fileUseVisitor.visitTextFile(textFile) }package visitor// FileStructure type FileStructure struct {fileResourceVisitableList []FileResourceVisitable }func (fileStructure *FileStructure) Attach(fileResourceVisitable FileResourceVisitable) {fileStructure.fileResourceVisitableList append(fileStructure.fileResourceVisitableList, fileResourceVisitable) }func (fileStructure *FileStructure) Detach(fileResourceVisitable FileResourceVisitable) {for i : 0; i len(fileStructure.fileResourceVisitableList); i {if fileStructure.fileResourceVisitableList[i] fileResourceVisitable {fileStructure.fileResourceVisitableList append(fileStructure.fileResourceVisitableList[:i], fileStructure.fileResourceVisitableList[i1:]...)}} }func (fileStructure *FileStructure) Accept(fileUseVisitor FileUseVisitor) {for _, fileResourceVisitable : range fileStructure.fileResourceVisitableList {fileResourceVisitable.accept(fileUseVisitor)} }package mainimport . proj/visitorfunc main() {fileStructure : FileStructure{}fileStructure.Attach(PPTFile{Path: test.ppt})fileStructure.Attach(PdfFile{Path: test.pdf})fileStructure.Attach(TextFile{Path: test.txt})fileStructure.Accept(Decompress{})fileStructure.Accept(Compress{}) }# 输出 Decompress file: test.ppt Decompress file: test.pdf Decompress file: test.txt Compress file: test.ppt Compress file: test.pdf Compress file: test.txt3、Java实现访问者模式 package com.visitor;// 访问者FileUseVisitor public interface FileUseVisitor {// 为每一个类声明一个visit操作void visitPdfFile(FileResourceVisitable fileResourceVisitable);void visitPPTFile(FileResourceVisitable fileResourceVisitable);void visitTextFile(FileResourceVisitable fileResourceVisitable); }package com.visitor;// 访问者Compress public class Compress implements FileUseVisitor{Overridepublic void visitPdfFile(FileResourceVisitable fileResourceVisitable) {System.out.println(Compress file: fileResourceVisitable.path);}Overridepublic void visitPPTFile(FileResourceVisitable fileResourceVisitable) {System.out.println(Compress file: fileResourceVisitable.path);}Overridepublic void visitTextFile(FileResourceVisitable fileResourceVisitable) {System.out.println(Compress file: fileResourceVisitable.path);} }package com.visitor;// 访问者Decompress public class Decompress implements FileUseVisitor{Overridepublic void visitPdfFile(FileResourceVisitable fileResourceVisitable) {System.out.println(Decompress file: fileResourceVisitable.path);}Overridepublic void visitPPTFile(FileResourceVisitable fileResourceVisitable) {System.out.println(Decompress file: fileResourceVisitable.path);}Overridepublic void visitTextFile(FileResourceVisitable fileResourceVisitable) {System.out.println(Decompress file: fileResourceVisitable.path);} }package com.visitor;// 接收者FileResourceVisitable public abstract class FileResourceVisitable {protected String path;abstract void accept(FileUseVisitor fileUseVisitor); }package com.visitor;// 接收者PdfFile public class PdfFile extends FileResourceVisitable {public PdfFile(String path){this.path path;}Overridepublic void accept(FileUseVisitor fileUseVisitor) {fileUseVisitor.visitPdfFile(this);} }package com.visitor;// 接收者PPTFile public class PPTFile extends FileResourceVisitable {public PPTFile(String path){this.path path;}Overridepublic void accept(FileUseVisitor fileUseVisitor) {fileUseVisitor.visitPPTFile(this);} } package com.visitor;// 接收者TextFile public class TextFile extends FileResourceVisitable {public TextFile(String path){this.path path;}Overridepublic void accept(FileUseVisitor fileUseVisitor) {fileUseVisitor.visitTextFile(this);} }package com.visitor;import java.util.ArrayList; import java.util.List; import java.util.Objects;// FileStructure public class FileStructure {ListFileResourceVisitable fileResourceVisitableList new ArrayList();public void attach(FileResourceVisitable fileResourceVisitable){fileResourceVisitableList.add(fileResourceVisitable);}public void detach(FileResourceVisitable fileResourceVisitable){Objects.requireNonNull(fileResourceVisitable);}public void accept(FileUseVisitor fileUseVisitor){for(FileResourceVisitable fileResourceVisitable:fileResourceVisitableList){fileResourceVisitable.accept(fileUseVisitor);}} }package com.visitor;public class Test {public static void main(String[] args) {FileStructure fileStructure new FileStructure();fileStructure.attach(new PPTFile(test.pdf));fileStructure.attach(new PdfFile(test.pdf));fileStructure.attach(new TextFile(test.txt));fileStructure.accept(new Compress());fileStructure.accept(new Decompress());} }# 输出 Compress file: test.pdf Compress file: test.pdf Compress file: test.txt Decompress file: test.pdf Decompress file: test.pdf Decompress file: test.txt
http://www.w-s-a.com/news/290575/

相关文章:

  • 怎么制作一个简单的网站七牛云做网站
  • 厦门建网站哪家好求网站建设合伙人
  • 营销型网站制作步骤五个宁波依众网络科技有限公司
  • 外贸响应式网站建设临清建设局网站
  • 手机怎样使用域名访问网站个人做旅游网站的意义
  • 西部数码域名网站模板网站建设怎么管理业务员
  • o2o手机维修网站那个公司做的电子网站风格设计
  • 网站建设预算计算方法什么是网络营销战略?网络营销战略有哪些基本类型
  • 无锡做网站公司多少钱网站备案方法
  • 建设网站最强做网站哪一家公司好
  • 漫画风格网站人物介绍网页模板html
  • 贵阳市住房和城乡建设局政务网站大连 网站开发
  • 漳州市住房建设局网站网站一般多长
  • 国外做网站推广小程序制作二维码签到
  • 做网站需要域名网站建设诚信服务
  • 做物品租赁网站网站建设的完整流程
  • 响应式企业网站开发所用的平台西安知名网站推广
  • 高端响应式网站建设wordpress 全屏主题
  • 国内工程机械行业网站建设现状ui是什么意思
  • 成都网站开发哪家公司好出售家教网站模板
  • 订阅号做流量 那些电影如何链接网站温州市建设监理协会网站
  • 成都网站建设成功案例单招网商丘网站建设大全
  • 受欢迎的购物网站建设网推专员是做什么的
  • 商城网站前期准备湖南郴州建设局网站
  • 企业如何在自己的网站上做宣传外贸自建站可以自己做网站吗
  • 甘肃网站建设制作商网站空间哪家公司的好
  • 思途旅游网站建设系统用vscode做网站
  • 广州站改造最新消息半年工作总结ppt模板
  • logo模板下载网站推荐哪家网站开发培训好
  • 做外贸网站效果图页面关键词优化