代码拉取完成,页面将自动刷新
同步操作将从 驯鹿者/ts_design_mode 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
// Node枚举
enum NodeTypeEnum {
Folder = "folder",
ImageFile = "image",
TextFile = "text"
}
// Node抽象类(Component)
abstract class AbstractNode {
protected name: string;
protected type: NodeTypeEnum;
protected children: AbstractNode[];
public abstract add(node: AbstractNode): AbstractNode;
public abstract getFileDeep(name: string): AbstractNode;
}
// 文件和文件夹基础类(Leaf)
class BasicFile extends AbstractNode {
public add(file: BasicFile): BasicFile {
console.error("文件类型不支持添加");
return this;
}
public getFileDeep(name: string): BasicFile {
if (name === this.name) {
return this;
}
return null;
}
}
class BasicFolder extends AbstractNode {
protected constructor() {
super();
this.type = NodeTypeEnum.Folder;
this.children = [];
}
public add(file: AbstractNode): BasicFolder {
this.children.push(file);
return this;
}
public getFileDeep(name: string): AbstractNode {
if (this.name === name) {
return this;
}
for (let index = 0; index < this.children.length; index++) {
const node = this.children[index].getFileDeep(name);
if (node) {
return node;
}
}
return null;
}
}
// 文件类
class ImageFile extends BasicFile {
constructor(name: string) {
super();
this.name = name;
this.type = NodeTypeEnum.ImageFile;
}
}
class TextFile extends BasicFile {
constructor(name: string) {
super();
this.name = name;
this.type = NodeTypeEnum.TextFile;
}
}
// 文件夹类
class SystemFolder extends BasicFolder {
constructor(name: string) {
super();
this.name = name;
}
}
// 客户端
class Client {
public static initTree(): SystemFolder {
const folder1: SystemFolder = new SystemFolder("根文件夹");
const folder2: SystemFolder = new SystemFolder("图像文件夹");
const folder3: SystemFolder = new SystemFolder("文本文件夹");
const image1: ImageFile = new ImageFile("a.jpg");
const image2: ImageFile = new ImageFile("b.jpg");
const text1: TextFile = new TextFile("a.txt");
const text2: TextFile = new TextFile("b.txt");
folder2.add(image1).add(image2);
folder3.add(text1).add(text2);
folder1.add(folder2).add(folder3);
return folder1;
}
}
const tree = Client.initTree();
const aJpg = tree.getFileDeep("a.jpg");
console.log(aJpg);
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。