网站302怎么做app开发公司都有哪些部门

news/2025/10/2 6:09:36/文章来源:
网站302怎么做,app开发公司都有哪些部门,上海紫昌网站建设,辽宁网站建设价格上一篇博客中我们从从电影院中认识了迭代器模式(Iterator Pattern)#xff0c;今天我们就从文件系统中来认识一下“组合模式”#xff08;Composite Pattern#xff09;。说到组合模式#xff0c;在此我想聊一下在类图中有组合与聚合的关系#xff0c;这两者都…上一篇博客中我们从从电影院中认识了迭代器模式(Iterator Pattern)今天我们就从文件系统中来认识一下“组合模式”Composite Pattern。说到组合模式在此我想聊一下在类图中有组合与聚合的关系这两者都是整体和部分的关系只是整体与部分的依赖度不同。在聚合关系中整体强烈依赖于部分而部分脱离于整体将没有存在的意义比如你身上的器官与你的关系就是聚合关系。而对于组合关系来说整体与部分的依赖就相对于小一些离开彼此也是可以独立生存的比如员工与公司的关系就是组合关系。 言归正传今天我们来介绍一下“组合模式”。下方就是组合模式的定义 组合模式允许你将对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象已经对象组合 组合模式也就是将多个独立的个体组合到一块不过组合时是有层级关系的而这些层级关系是“树”形的关系。典型的树状层级关系就是我们的文件系统下方截图就是我们资源管理器的一个文件层级的截图。可以明确的看出下方是树状的层级关系。今天我们的任务就是使用“组合模式”模拟下方的文件结构。从下方的截图中我们可以分析出文件总体上可以分为两种类型一个是文件夹在一个就是真正有内容的文件。文件夹是一种容器它不仅可以存储文件还可以存储文件夹。文件夹可以存储文件以及其他文件夹这一特性就决定文件系统是一个树形结构。           一、模拟“文件系统”实现的类图设计 依旧是老套路我们要使用代码结合“组合模式”来模仿上面截图中的文件结构首先我们先来设计类图然后在根据我们设计的类图来给出代码实现。上面我们已经提到过文件夹就是可以存储其他文件夹和文件的容器所以在我们设计实现是打算使用Dictionary字典来实现这一容器的特性至于如何去实现下方会给出具体的实现方式。下方的类图就是我们要实现的“文件系统”的类图当然我们是模拟的尽量的简化了一些操作。下方也使用了组合模式Folder类就是组合文件夹与文件的地方稍后会给出具体的说明。 首先我们来介绍下方黄色框中的文件类型协议与该协议的延展。FileType是我们所有文件的协议无论是文件夹还是具体文件都遵循该协议该协议中给出了文件以及文件夹的必要操作。在该协议的默认延展中给出了协议中那些只需要文件夹实现而具体文件不需要实现的方法如addFile()、deleteFile()方法只有文件夹容器才会有这些方法。该协议的具体呢绒如下类图中黄框中的内容所示。 然后是红框中的部分红框中是我们文件夹的实现也是我们组合模式的核心模块。经过观察Folder文件夹类我们不难发现Folder不仅仅遵循了FileType接口还依赖于FileType接口。因为Folder是文件的一种类型所以要遵循FileType接口。同时Folder是文件的容器可以存放所有的文件和文件夹也就是遵循FileType接口的所有类所以Folder依赖于FileType接口。这个特性决定了组合模式有着树形结构。 最后是绿框中的部分该部分的代码比较单纯。绿框中是具体文件的类。该模块有一个基类也就是BaseFile。所有的具体文件都继承自BaseFile因为BaseFile也是文件的一种所以也需要遵循FileType协议。因为具体文件不是容器不需要实现addFile()等容器使用到的方法。因为具体文件遵循了FileType协议而Folder依赖于FileType协议所以Folder可以存储具体文件。整体的类图如下所示       二、“文件系统”的代码实现 有了上面的类图再给出相应的代码实现就容易的多了。接下来我们就根据上面的类图给出相应的Swift代码实现。首先我们会给出FileType协议以及其延展的实现具体代码片段如下所示。getFileName()方法用户获取文件名addFile(file)用于文件夹添加文件deleteFile(file)用于文件夹删除文件display()用于打印文件名。FileType延展中给出了具体文件不需要实现的方法所以在延展中给出了一个默认的实现类似于抽象类中的方法实现。因为在协议延展中给出了方法的默认实现所以在文件类中的可以不给出协议延展中的方法。FileType与其延展的代码段如下所示。        实现完相关的接口和扩展后就开始实现我们的具体类了接下来我们将要给出组合模式的核心类Folder容器类。下方的Folder就是我们用代码实现的文件夹Folder遵循了FileType接口并给出了相应方法的具体实现。在Folder中我们要注意一下files属性该属性就是组合的聚集地。我们可以看出files的类型是一个字典字典的key是String类型而字典的Value是FileType类型。也就是说files中可以存储遵循FileType协议的所有类也就是files中可以存储文件和文件夹。“组合模式”在此处的提现就是文件以及文件夹在一块进行组合会生成一个新的文件夹。 下方还需要注意的就是Folder中的display()方法。该方法是遍历files数组然后取出其中的文件或者文件夹对象然后调用这些对象的display()方法。这样就会输出当前文件夹下所有的文件的名称。Folder文件夹类的具体实现方式如下所示       上面给出了文件夹的实现接着我们要实现另一种文件类型就是具体的文件了。在实现具体文件时我们定义了一个具体文件的基类就是BaseFile。当然BaseFile也遵循与FileType协议这就是我们面向接口编程。在BaseFile基类中我们给出了所有文件所共有的方法比如getFileName()和display()方法。接着我们又实现了两个特定的文件类型一个Swift源文件SwiftFile另一个就是Objective-C源文件ObjCFile。这两个具体的文件都继承自BaseFile类。具体代码实现如下所示        三、测试用例 接下来就到了测试用例的部分了也就是上面类图中的Client的部分。Client就是该文件系统的使用者从类图中我们可以看出来Client依赖于FileType接口而不依赖于具体实现。因为我们是在Xcode中的Playground中做的测试所以我们就没有给出具体的Client类。但是下方代码就等同于Client类中的代码。下方就是我们的测试用例我们构建了本文开头的文件目录结构并输出了文件夹下所有文件的名称。测试用例与输出结果如下所示      至此我们的“组合模式”的一个完整示例就执行完了。 同样今天的Demo也会在github上进行分享分享地址为https://github.com/lizelu/DesignPatterns-Swift  转载于:https://www.cnblogs.com/ludashi/p/5439128.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/924593.shtml

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

相关文章

襄阳市建设公司网站网站建设用处

文章目录 配置文件位置和路径自定义配置文件 属性注入添加yaml文件的支持 配置文件 位置和路径 当我们创建一个 Spring Boot 工程时,默认 resources 目录下就有一个 application.properties 文件,可以在 application.properties 文件中进行项目配置&am…

南通给公司做网站的移动互联网开发工程师

这是我的第 190 期分享作者 | 王磊来源 | Java中文社群(ID:javacn666) 分享 | Java中文社群(ID:javacn666)上一篇《if快还是switch快?解密switch背后的秘密》我们测试了 if 和 switch 的性能&am…

苏州做管网gis的网站微信分销系统合法吗

面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,…

潍坊专业网站建设用c语言做网站

单继承 class luban:def __init__(self, name):self.name nameself.skill "摸鱼飞弹"self.damageLevel 20def attack(self):print("{} 使用了技能{} ,给敌方带来了极大的困扰\n""并有{}% 的机会造成一击必杀的效果".format(self.…

南山专业做网站公司如何做网站优化的内容

本系列文章简介: 本系列文章将深入揭秘Lucene,全面解析其原理与应用场景。我们将从Lucene的基本概念和核心组件开始,逐步介绍Lucene的索引原理、搜索算法以及性能优化策略。通过阅读本文,读者将会对Lucene的工作原理有更深入的了解…

婚纱摄影在哪个网站找该工具支持 preview 功能

这里我们先试着训练一下,我们用官方提供的训练数据进行训练. 也没有说使用CPU可以进行微调,但是我们先执行一下试试: https://www.heywhale.com/mw/project/6436d82948f7da1fee2be59e 可以看到说INT4量化级别最低需要7GB显存可以启动微调,但是 并没有说CPU可以进行微调.我们…

江西房地产网站建设wordpress 海报

安科瑞 华楠 摘 要:泛在电力物联网是当前智能电网发展的一个方向。首先,总结了泛在电力物联网的主要作用和价值体现;其次,从智能电网各个环节概述了物联网技术在电力领域的已有研究和应用基础;进而,构思并…

哪里有做网站培训的东莞松山湖华为招聘信息

什么是外键: 如果一个实体的某个字段指向另一个实体的主键,就称为外键。被指向的实体,称之为主实体(主表),也叫父实体(父表)。负责指向的实体,称之为从实体(…

佛山网站优化指导黑河市网站建设公司

在iOS 8.2正式版更新以后,在手机界面上就多出了一个“Apple Watch”的新图标,这是专门针对苹果新产品Apple Watch的应用,主要作用就是连接iPhone和Apple Watch,并未Apple Watch下载应用。打开“Apple Watch”首先进入的是“我的手…

好看的免费的小说网站模板注册商标需要什么条件

文章目录 1、给查询商铺的缓存添加超时剔除和主动更新的策略2、根据id查询店铺2.1、queryById2.2、RedisConstants.java 3、根据id修改店铺3.1、ShopController.java3.2、update 1、给查询商铺的缓存添加超时剔除和主动更新的策略 修改ShopController中的业务逻辑,满…

dede网站地图html文件wordpress内置分页方法

一个Samba服务器要么经典模式访问(用户名密码),要么友好访问(guest),只可选其一。㈠准备工作:1>清除客户端windows系统的上次访问自动记录CMD下运行:net use * /delete /y2>关…

重庆璧山网站制作公司推荐我想带货怎么找货源

前言 最近做换脸,在肤色调整的那一块,看到一个有意思的文章,复现一波玩玩。不过最后一步掉链子了,有兴趣的可以一起讨论把链子补上。 主要是github上大佬的那个复现代码和原文有点差异,而且代码复杂度过高&#xff0…

做网站感觉挣不到钱啊答题小程序免费制作平台

把常见的几个记牢,不要在比赛时纠结。 错误2:输入文件未找到。 错误106:数据读入的格式错误,往往是读入语句出错。 错误200:被零除。 错误201:范围检查错误,数组越界。 错误202:栈溢…

CF2150D

挺有意思的计数题,希望下次可以做出来类似的题目。 一个显然的转化是把 \(p\) 数组转换成记录每个位置的人数的 \(f\) 数组,于是我们需要求每种情况下的 \(\sum f_i a_i\) 。 首先需要一些观察,初始 \(f\) 数组每个…

手机网站 英文南京网站制作搭建

描述 输入 输入共n1行 第一行输入矩阵的总个数n[2,1000] 后n行分别输入矩阵的维数[1,100] 输出 最后一行输出少乘法次数 输入样例 1 6 30 35 35 15 15 5 5 10 10 20 20 25 输出样例1 15125 代码实现 #include<iostream> #include<vector> #include<…

重庆江北网站建设怎么做免费视频网站

High-Speed Tracking with Kernelized Correlation Filters 使用内核化相关滤波器进行高速跟踪 大多数现代跟踪器的核心组件是判别分类器&#xff0c;其任务是区分目标和周围环境。为了应对自然图像变化&#xff0c;此分类器通常使用平移和缩放的样本补丁进行训练。此类样本集…

网站建设logo要什么格式网站广告连接如何做

一、运动积木概念 在Scratch编程中&#xff0c;运动积木是至关重要的一类积木&#xff0c;它能使我们的角色动起来&#xff01;运动积木是创造动感项目的关键。 二、运动积木的位置 点击左上角的“代码”按钮&#xff0c;然后在界面最左边找到“运动”按钮&#xff0c;这个按…

网站访问工具网站检测器

Python学习之路-Flask项目:博客前台 前言 前一篇完成了项目开发前的所有准备工作&#xff0c;本篇将完成整个博客的前台相关工作。 首页 前言 首页主要为我们提供各个分类入口已经按时间顺序的文章列表和列表排行等数据&#xff0c;是进入博客中第一眼看到的&#xff0c;接…

建设厅网站贵州人事考试信息网提供手机网站制作公司

目录 一、LiveData的基本使用1. 使用方式一2. 使用方式二3. 使用方式三 二、LiveData 去除黏性数据的方法1. 去除黏性的Java版本2. 去除黏性的Kotlin版本 一、LiveData的基本使用 1. 使用方式一 MyLiveData.kt package com.example.mylivedata.simple1import androidx.lifec…

如何查看网站开发源码宁波seo软件

$ clip < ~/.ssh/id_rsa.pubbash: /c/Users/UsersName/.ssh/id_rsa.pub: No such file or directoryStep 1、检查本机现有的SSH密钥检查~/.ssh看看是否有名为d_rsa.pub和id_dsa.pub的2个文件。如果你什么都没得到这些文件&#xff0c;转到 步骤2 ;否则&#xff0c;请跳到 …