建设银行网站查询html5素材网

web/2025/9/29 0:39:12/文章来源:
建设银行网站查询,html5素材网,开发公司公司简介,义乌建网站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.mzph.cn/web/83605.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何建立网站站点seo推广优化费用

HarmonyOS入门学习 前言快速入门ArkTS组件基础组件Image组件Text组件TextInput 文本输入框Buttonslider 滑动组件 页面布局循环控制ForEach循环创建组件 List自定义组件创建自定义组件Builder 自定义函数 状态管理Prop和LinkProvide和ConsumeObjectLink和Observed ArkUI页面路由…

数码网站模板申请账号注册

场景 设计模式-装饰者模式在Java中的使用示例: 设计模式-装饰者模式在Java中的使用示例_java装饰者模式例子-CSDN博客 上面装饰器的调用示例如下 AbstarctComputer computer;//要买1台电脑computer new BaseComputer();//加一个内存条computer new MemoryDecor…

经营范围 网站开发微信电脑网页版

有什么方法可以指定字符串长度,不够的自动补空格char定义的是一个半角字符。 当人心变成市场,当市场变成战场,战场埋葬多少理想。char[]定义的是一个不定长的数组,实际上是指针,用前要初始化。不过某些编程环境可能会根…

南昌中小企业网站制作下载微信小程序app

最近工作一直比较忙,很多想法没时间写下来,最近回复了CSDN杂志社的一系列相关的建模问题,顺便贴在这里,欢迎大家讨论。 以下是我对建模的一些看法 1 你怎么看待建模?作为一个程序员,可能每个人都经历过这样…

020网站系统wordpress怎么做

大家好,我是全栈小5,欢迎阅读小5的系列文章,这是《话题》系列文章 目录 背景招聘分析一、技术更新换代的挑战二、经验与技术的双重优势三、职业发展的多元化选择四、个人成长与职业规划的平衡五、结语文章推荐 背景 35岁被认为是程序员职业生…

网站建设公司 云智互联深圳个人网站建设

文章目录 引言工作原理剖析EnableAutoConfiguration自动配置生效总结 引言 不论在工作中,亦或是求职面试,Spring Boot已经成为我们必知必会的技能项。除了某些老旧的政府项目或金融项目持有观望态度外,如今的各行各业都在飞速的拥抱这个已经…

建设工程 法律 网站学了网站建设的心得体会

MySQL主从复制机制简述 MySQL的主从复制机制是一种数据复制方案,用于在多个服务器之间同步数据。此机制允许从一个服务器(主服务器)到一个或多个其他服务器(从服务器)进行数据的复制,从而增强数据冗余、提…

高密微网站建设网站开发主要使用的技术

网络交换机,是一个扩大网络的器材,能为子网络中提供更多的连接端口,以便连接更多的计算机。我们在配置交换机的时候首先要了解的就是交换机命令模式,那么,网络交换机的命令配置模式有哪些呢?接下来小编就来…

保健品网站建设案例购物网站的详细设计

目录 Logistic回归公式推导: Sigmoid函数: Logistic回归如何实现分类: 优化的方法: 代码: 1.创建一个随机数据集,分类直线为y2x: 为什么用np.hstack()增加一列1? 为什么返回…

网站建设基本模板介绍百度电话号码查询

数据类型 数据类型 在JavaScript中,数据类型有两大类。一类是基本数据类型,一类是引用数据类型。 基本数据类型有六种:number、string、boolean、null、undefined、symbol。 基本数据类型存放在栈中。存放在栈中的数据具有数据大小确定&a…

网站设计的目的燕郊医院网站建设

代码: https://github.com/ReneNyffenegger/cpp-base64 指南:https://renenyffenegger.ch/notes/development/Base64/Encoding-and-decoding-base-64-with-cpp/ 实操:

网站引导页的作用做暧暧暖免费观看网站

实验要求: 看拓扑有两个网段则我们首先需要对200.1.1.0/26进行子网划分,划分为两个子网,为200.1.1.0/27和200.1.1.32/27 我门就可以一边一个网段了,左边为200.1.1.0/27,右边为200.1.1.32/27 1、配置PC1,2…

如何提高网站点击率我的世界服务器如何做充钱网站

参考自哔站:FPGA IP之AXI4-Lite AXI4-Stream_哔哩哔哩_bilibili 信号 传输层级从小到大 包(----------transfer--transfer--------)------delay--------包(----------transfer--transfer--------) TKEEP和TSTRB共同决定了是哪种数据流

移动网站开发的视频下载南京公司网站建设费用

来源:机器人创新生态摘要:我们已经听说过柔性电子“皮肤”可以让机器人或假肢具有类似人类的触觉。然而,现在德克萨斯大学阿灵顿分校的科学家们声称他们开发的“皮肤”比具有比人类更好的触觉敏感。由Zeynep ?elik-Butler教授领导的团队创建…

网站的缩略图扁平化 wordpress 主题下载

前言:这是白杨SEO原创第523篇。为什么想到写这个?因为有好几个朋友问我做SEO主要用哪个AI工具来创作?所以就分享一下我用的工具,希望对大家有一点点帮助,需要的可以收藏。图片在公众号白杨SEO上去看。 声明&#xff1…

做app好还是响应式网站河北邯郸封闭最新消息

新建代码库repository 1、在当前目录新建一个git代码库 git init git init projectname 2、下载一个项目,如果已经有了远端的代码,则可以使用clone下载 git clone url 增加/删除/改名文件 1、添加指定文件到暂存区 git add filename 2、添加指定目录到暂…

新建网站网络空间室内设计装修是什么专业

设计与实现一个简单词法分析。具体内容是产生一个二元式文本文件,扩展名为dyd,可将Java或C程序(测试程序)分解成为一个一个的单词及类型。 (选做:并查“单词符号与种别对照表”得出其种别,用一数字表示。)…

提供网站建设收益分录全网营销推广有哪些平台

Seata AT 模式 上一节中我们提到AT模式是基于XA事务模型演变过来的,所以他的整体机制也是一个改进版本的两阶段提交协议。 第一阶段:业务数据和回滚日志记录在同一个本地事务中提交,释放本地锁和链接资源第二阶段:提交异步化&…

散热器 东莞网站建设模板免费下载网站

此实验的前提是防火墙需关闭。 1.关闭iptables /etc/init.d/iptables stop /etc/init.d/iptables status 2.关闭selinux setenforce 0 getenforce Permissive ---出现这个单词即代表selinux临时关闭,如需永久关闭则需修改/etc/sysconfig/selinux配置文件 …

杭州企业建设网站企业哔哩哔哩网页版怎么回到旧版

前言 友链: 原文地址 ❓-背景- 现有物理机A,B。A中安装了虚拟机VM上面部署了服务(这里以mysql为例)。B需要访问A虚拟机中部署的服务。 -环境- 物理机A(192.168.135.161)物理机B(192.168.135.162&#xf…