丰都网站建设案例网站制作全包价格

张小明 2026/1/11 6:17:49
丰都网站建设案例,网站制作全包价格,eclipse与jsp网站开发,网页微信版文件传输助手什么是组合模式#xff1f;组合模式(Composite Pattern)#xff0c;是一种结构型设计模式#xff0c;这种模式将对象组合成树形结构#xff0c;以表示部分--整体的层次关系#xff0c;组合模式使得用户对单个对象和组合对象的使用具有一致性。组合模式的结构角色说明Compo…什么是组合模式组合模式(Composite Pattern)是一种结构型设计模式这种模式将对象组合成树形结构以表示部分--整体的层次关系组合模式使得用户对单个对象和组合对象的使用具有一致性。组合模式的结构角色说明Component抽象组件定义叶子和容器的公共接口Leaf叶子节点实现 Component 的具体行为如 FileComposite容器节点持有子组件列表实现 Component 并提供 add/remove 等管理方法如 Folder代码实现-文件系统示例第一步定义抽象组件FileSystemItempublic abstract class FileSystemItem { protected String name; public FileSystemItem(String name) { this.name name; } /** * 显示文件或目录的信息 * param indent 缩进级别用于显示层级结构 */ public abstract void display(int indent); /** * 获取文件或目录的大小 * return 文件或目录的大小字节 */ public abstract long getSize(); // 工具方法生成缩进 protected String getIndent(int level) { return .repeat(level); } }第二步实现叶子节点Filepublic class File extends FileSystemItem { private long size; public File(String name, long size) { super(name); this.size size; } /** * 显示文件或目录的信息 * * param indent 缩进级别用于显示层级结构 */ Override public void display(int indent) { System.out.println(getIndent(indent) name ( size KB)); } /** * 获取文件或目录的大小 * * return 文件或目录的大小字节 */ Override public long getSize() { return size; } }第三步实现容器节点Folderpublic class Folder extends FileSystemItem { private ListFileSystemItem children new ArrayList(); public Folder(String name) { super(name); } /** * 显示文件或目录的信息 * * param indent 缩进级别用于显示层级结构 */ Override public void display(int indent) { System.out.println(getIndent(indent) name); for (FileSystemItem child : children) { child.display(indent 1); // 递归显示子项 } } // 管理子组件的方法仅 Composite 需要 public void add(FileSystemItem item) { children.add(item); } public void remove(FileSystemItem item) { children.remove(item); } public ListFileSystemItem getChildren() { return Collections.unmodifiableList(children); } /** * 获取文件或目录的大小 * * return 文件或目录的大小字节 */ Override public long getSize() { return children.stream() .mapToLong(FileSystemItem::getSize) .sum(); } }第四步客户端使用public class CompositeDemo { public static void main(String[] args) { // 构建树形结构 Folder project new Folder(MyProject); Folder docs new Folder(docs); docs.add(new File(requirements.md, 10)); docs.add(new File(design.png, 500)); Folder src new Folder(src); src.add(new File(Main.java, 20)); src.add(new File(Utils.java, 15)); project.add(docs); project.add(src); project.add(new File(README.md, 5)); // 统一操作无需区分 File 或 Folder project.display(0); System.out.println(\n总大小: project.getSize() KB); } }运行输出两种组合模式变体类型特点优缺点透明式TransparentComponent 接口中声明所有方法包括add,remove客户端完全透明但 Leaf 必须抛出UnsupportedOperationException安全式Safe只在 Composite 中定义管理子节点的方法类型安全但客户端需知道对象是否为 Composite如需调用add我们上面的例子采用的是安全式更符合 Java 的类型安全理念。组合模式的优点✅简化客户端代码统一接口无需判断类型。✅易于扩展新增组件类型不影响现有逻辑。✅天然支持递归操作非常适合树形数据结构。典型应用场景️GUI 组件树Swing/AWT 中的Container和ComponentDOM 树操作HTML 元素的父子结构组织架构公司 → 部门 → 员工游戏对象层级场景 → 角色 → 武器/特效菜单系统主菜单 → 子菜单 → 菜单项总结组合模式通过抽象出统一的行为接口巧妙地将“个体”与“整体”统一处理极大提升了代码的可读性、可维护性和可扩展性。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

学做网站能赚钱吗沅江网站设计

纯镍旋塞阀的常见型号包括 X43W-10Ni、X43W-150LB(Ni)、X343W-10Ni、X343W-150LB(Ni)、X943W-10Ni、X943W-150LB(Ni) 等。这些型号的阀门通常以 Nickel200(N02200)、Nickel201(N02201)、N6 等纯镍材料制造,适用于高温浓…

张小明 2026/1/4 21:37:00 网站建设

中国最近新闻大事件网络营销推广seo

如何用 EmotiVoice 实现零样本声音克隆?技术深度解析 在智能语音日益渗透日常生活的今天,我们早已不满足于“机器能说话”这一基本能力。用户期待的是更具个性、更有情感的语音交互体验——比如让 AI 用亲人的声音讲故事,或让游戏角色以愤怒的…

张小明 2026/1/4 23:02:46 网站建设

网络推广网站程序西安的电商网站设计

模型的强大,离不开其背后的数据和架构。随着 GPT-5.2 的专业性能达到新高度,用户对于其训练数据的构成、时效性以及如何处理多模态输入的兴趣也日益增加。同时,在高可靠性承诺的背后,OpenAI 对用户隐私和数据安全采取了哪些新的保…

张小明 2026/1/4 23:01:11 网站建设

网站建设与实训公司网站设计需要多少钱

公众号:cpp手艺人 QWebEngine 常用 API 全面梳理(超全版本) Qt WebEngine 基于 Chromium,但提供了 Qt 风格的 API。本文对 QWebEngine 的常用类与 API 进行系统梳理,帮助你快速掌握其开发全景。 1. QWebEngineView(视图层) QWebEngineView 是最常用的 UI 控件,主要…

张小明 2026/1/4 22:59:45 网站建设

国外网站打开很慢河北省建设工程招投标管理网站

最近遇到一个人脸搜索的需求,驿站的快递被人误领,拿走几天还没有送回来,所以想从出库仪中找历史出库记录的想法。实现思路:1.从雷现出库仪上拷贝文件下来。(拷贝几十万张人脸数据花了不少时间)2.开发人脸搜索工具3.搜索比对&#…

张小明 2026/1/4 22:59:40 网站建设