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

广东省建筑网站贵州交通建设集团

广东省建筑网站,贵州交通建设集团,2345网址大全设首页,wordpress什么叫静态目录 1、核心思想 2、实现方式 2.1 模式结构 2.2 实现案例 3、优缺点分析 4、适用场景 1、核心思想 目的:将总是在重复、迭代地显示的某种自相似性的结构(部分与整体结构特征相似),例如树形结构,以统一的方式处…

目录

1、核心思想

2、实现方式

2.1 模式结构

2.2 实现案例

3、优缺点分析

4、适用场景


1、核心思想

目的:将总是在重复、迭代地显示的某种自相似性的结构(部分与整体结构特征相似),例如树形结构,以统一的方式处理单个对象和对象组合,最终达到对象复杂的层次结构与客户端解耦的目的。

解决思路:用组合模式来表达“部分/整体”的层次结构,提取并抽象其相同的部分,特殊化其不同的部分,以提高系统的可复用性与可扩展性,最终达到以不变应万变的目的。

举例

1> 蕨类植物的叶子,不管从哪个层级观察这片叶子,我们都会得到一个固定的结构,这意味着组成植物叶子的部分或整体都有着相同的生长方式。

2> 二叉树,此结构始于其开端的“根”节点,往下分出来两个“枝”节点(左右2个节点)​,接着每个枝节点又可以继续“分枝”​,直至其末端的“叶”节点为止。

2、实现方式

2.1 模式结构

三个核心结构:

  • Component(组件接口)​:所有复合节点与叶节点的高层抽象,定义出需要对组件操作的接口标准(声明管理子组件的方法(如透明模式)或仅定义公共行为(如安全模式))。
  • Composite(复合组件)​:包含多个子组件对象(List<Node>,可以是复合组件或叶端组件)的复合型组件,负责管理子组件(添加、删除、遍历),并委托操作到所有子节点。
  • Leaf(叶端组件)​:不包含子组件的终端组件,同样实现组件接口中定义的操作方法。通常不实现子组件管理方法(如add),若数据接口标准,可抛出异常。

2.2 实现案例

文件系统:文件系统由文件和文件夹构成,文件夹可包含文件或其他文件夹(tree);可以层级打印文件结构(tree)。

// 组件接口
public abstract class Node {protect String name;//节点命名public Node(String name) {//构造方法需传入节点名this.name = name;}//增加后续子节点方法public abstract void add(Node child);public void tree(int space) {for(int i=0; i < space; i++) {System.out.print(" ");//先循环输入space个空格}System.out.println(name);//接着再输出自己的名字}//无参重载方法,默认从第0列开始展示public void tree() {this.tree(0);}
}// 组合:文件夹
class Folder implements Node{// 文件夹可以包含子节点(子文件夹或文件)private List<Node> children = new ArrayList<>();public Folder(String name) { super(name);// 调用父类“节点”的构造方法命名}public void add(Node child) {children.add(child);//可以添加子节点}@Overridepublic void tree() {super.tree(space); //调用父类通用的tree方法列出自己的名字space++; //在循环的子节点前,空格数要加1for (Node child: children) {child.tree(); // 调用子节点的tree方法}}
}// 叶子:文件
class File implements Node{public File(String name)  { super(name);}public void add(Node child) {System.out.println("不能添加子节点");}@Overridepublic void tree() {super.tree(space);}
}// 客户端调用
public class Client {public static void main(String[] args) {Folder root = new Folder("D盘");root.add(new File("简历.pdf"));Folder subFolder = new Folder("图片");subFolder.add(new File("1.jpg"));subFolder.add(new File("2.png"));root.add(subFolder);root.tree();}
}

3、优缺点分析

优点:

  • 统一处理:客户端无需区分叶子节点和组合节点。

  • 扩展性强:新增组件类型无需修改现有代码,符合开闭原则。

  • 树形结构支持:天然适合递归和层次化数据管理。

缺点:

  • 接口设计挑战

    • 透明模式:叶子需实现不相关方法(如add),可能抛出异常。

    • 安全模式:客户端需类型检查,失去透明性。

  • 性能开销:递归遍历可能影响性能(深层次结构)。

4、适用场景

  • 树形结构表示:文件系统、菜单/子菜单、组织架构。

  • 递归操作需求:统计目录大小、渲染UI组件树。

  • 统一处理逻辑:对单个对象和组合对象执行相同操作(如复制、删除)。


文章转载自:

http://JmO6wMA0.msLsn.cn
http://vN9HrzFI.msLsn.cn
http://ydorWaXO.msLsn.cn
http://hUWjv9UU.msLsn.cn
http://NgqBFzqU.msLsn.cn
http://F1VlOBTy.msLsn.cn
http://MrSkVcks.msLsn.cn
http://FlIyvS0M.msLsn.cn
http://MGXUQbTm.msLsn.cn
http://CNKiBuL3.msLsn.cn
http://1AyzX7qn.msLsn.cn
http://8esbQlpb.msLsn.cn
http://isUSeDAF.msLsn.cn
http://NcfFGm7Q.msLsn.cn
http://dEknTkZ4.msLsn.cn
http://6Q7mT7W5.msLsn.cn
http://8xDJc43m.msLsn.cn
http://IB6Oi6Jg.msLsn.cn
http://B4uhGEZC.msLsn.cn
http://Iv9HKXcC.msLsn.cn
http://zObxeXFE.msLsn.cn
http://aVF2SnMo.msLsn.cn
http://Wx3HbaCv.msLsn.cn
http://WlXqjFdL.msLsn.cn
http://4K0jhDXA.msLsn.cn
http://CsMBOTIQ.msLsn.cn
http://dfVVZGnT.msLsn.cn
http://oHuuTawk.msLsn.cn
http://CD4mkxx5.msLsn.cn
http://n8A8eh0C.msLsn.cn
http://www.dtcms.com/wzjs/706626.html

相关文章:

  • 枣庄网站制作公司div做网站排版
  • 自己如何做网站关键词排名山东银汇建设集团网站
  • 正邦做网站吗做动态效果的插件网站
  • 做外贸怎样上国外网站做电子签章登录哪个网站
  • 关于购物网站开发的开题报告无锡网站建设无锡网络推广
  • 个人小型网站建设如何投诉做网站的公司
  • 做网站默认城市wordpress微信群导航模板
  • 模特公司网站模板网络专题的设计策划方案
  • 网站建设的一些背景图片建筑公司资质等级
  • 南宁网站建设技术支持海南注册家族公司条件
  • 在哪里可以找到网站响应式网站无法做联盟广告
  • 网站备案多长时间来完成电子商务网上法庭
  • 网站建设责任分工表长沙网页制作模板
  • 网站建设的创新之处网站建设找汉狮
  • 网站建设会遇到哪些问题河南省百城建设提质工程官网网站
  • 济南网站制作工具东莞网站建设优化排名
  • 河南网站建设优化网站多少个关键词
  • 购物网站开发代码安徽省建设工程管理信息网
  • 波莱网站开发做网站建设公司crm在线的提升服务
  • 广东建设执业资格注册管理中心网站wordpress wpquery
  • 广西建设网站官网雅安网站建设公司
  • 2017 上海网站备案发帖推广哪个平台好
  • 有人做几个蝎子养殖门户网站平顶山市做网站
  • 网站建设简单合同模板东营市建设工程网官网
  • 关于网络的网站怎么做网站改版提案
  • 免费在线网站甘肃建设网站
  • 网站标题字体大小广州市手机网站建设
  • 国外电商网站网站模版怎么上传到空间
  • 安徽区块链虚拟币网站开发价格郑州广告牌制作市场
  • 做标准件网站四川超宇建设集团有限公司网站