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

电子商务网站开发价格安徽工程造价信息网

电子商务网站开发价格,安徽工程造价信息网,网站建设金手指排名霸屏,常州高端网站定制公司结构性设计模式之Composite(组合) 摘要: Composite(组合)模式通过树形结构表示"部分-整体"层次关系,使得用户能够统一处理单个对象和组合对象。该模式包含Component(组件接口&#x…

结构性设计模式之Composite(组合)

摘要:
Composite(组合)模式通过树形结构表示"部分-整体"层次关系,使得用户能够统一处理单个对象和组合对象。该模式包含Component(组件接口)、Leaf(叶子节点)和Composite(组合节点)三个核心角色,适用于需要表示对象层次结构并统一操作的场景。示例代码展示了文件夹结构的实现,Folder类管理子组件,File类作为叶子节点,通过递归遍历实现统一处理。该模式简化了客户端代码,使系统更易扩展和维护。

1)意图;

将对象组合成树型结构以表示“部分-整体”的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性。

2)结构

在这里插入图片描述

其中:

  • Componect 为组合中的对象声明接口:在适当情况下实现所有类共有接口的默认行为:

    声明一个接口用户访问和管理 Componect的子组件;(可选)在递归结构中定义一个

    接口,用于访问一个父组件,并在合适的情况下实现它。

  • Leaf 在组合中表示叶节点对象,叶结点没有子节点节点;在组合中定义图元对象的行为。

  • Composite定义有子组件的那些组件的行为;存储子组件;在Component接口中实现与子组件有关的操作。

  • Client 通过 Component 接口操纵组合组件的对象。

3)适用性

Composite 模式下适用于:

  • 想表示对象的部分-整体层次结构。
  • 希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。

代码

import java.util.ArrayList;
import java.util.List;/*** @author psd 结构性设计模式之组合设计模式*/
public class ComponentDemo {public static void main(String[] args) {AbstractFile root = new Folder("root");AbstractFile folderA = new Folder("folderA");AbstractFile folderB = new Folder("folderB");AbstractFile fileC = new File("fileC");AbstractFile fileD = new File("fileD");AbstractFile fileE = new File("fileE");root.add(folderA);root.add(folderB);root.add(fileC);folderA.add(fileD);folderA.add(fileE);print(root);}private static void print(AbstractFile file) {file.printName();List<AbstractFile> childrenList = file.getChildren();if (childrenList == null) {return;}for (AbstractFile children : childrenList) {print(children);}}
}abstract class AbstractFile {protected String name;public void printName() {System.out.println(name);}public abstract boolean add(AbstractFile file);public abstract boolean remove(AbstractFile file);public abstract List<AbstractFile> getChildren();
}/*** 文件夹*/
class Folder extends AbstractFile {public Folder(String name) {this.name = name;}List<AbstractFile> children = new ArrayList<>();@Overridepublic boolean add(AbstractFile file) {return children.add(file);}@Overridepublic boolean remove(AbstractFile file) {return children.remove(file);}@Overridepublic List<AbstractFile> getChildren() {return children;}
}class File extends AbstractFile {public File(String name) {this.name = name;}@Overridepublic boolean add(AbstractFile file) {return false;}@Overridepublic boolean remove(AbstractFile file) {return false;}@Overridepublic List<AbstractFile> getChildren() {return null;}}

代码目录结构如下:

在这里插入图片描述
欢我的文章记得点个在看,或者点赞,持续更新中ing…

http://www.dtcms.com/a/611285.html

相关文章:

  • 快看点自媒体平台网站怎样做优化
  • 微信小程序 点击某个marker改变其大小
  • 51Sim 4DGS闭环仿真架构,让基于真实数据的闭环仿真成为可能
  • 基于质谱的蛋白质组学能用来研究多肽的结构和功能吗?
  • 网站速度优化方案一般可以在哪些网站做推广
  • deep-oc-sort——yolov5/8/9/10/11/12/13+deep-oc-sort算法的目标跟踪实现
  • Gitee使用笔记
  • 看摄影作品的网站长沙seo研究中心
  • 襄樊网站制作公司怎么在阿里云建网站
  • idea2022.3.3常用配置
  • 分销小程序开发研发公司赣榆网站建设xxiaoseo
  • 让数据“开口说话”:商城大数据如何预测元器件价格波动与供应风险?
  • 尼罗发表小说做的的网站是哪个长沙关键词快速排名
  • 建立主题网站的顺序一般是西安知名网站建设公司排名
  • HTML 脚本:基础、应用与未来趋势
  • 网站建设费属于业务宣传费吗网站程序组成
  • Blazor全栈是个陷阱
  • 【多源 BFS】3.地图中的最⾼点(medium)
  • 网站建设需要学代码吗巴中企业网站建设
  • 开发网站公司交税网站建设php的心得和体会
  • 超参数调优:Grid Search 和 Random Search 的实战对比
  • 编译语言有哪些 | 探索编译语言的种类及其应用领域
  • 网站的弹窗是怎么做的ol游戏大全排行榜
  • 玩转Docker | 使用Docker部署Tomcat服务器
  • RHCA - DO374 | Day06:管理任务执行
  • html5移动网站开发实践做招聘信息的网站有哪些内容
  • 天际股份、天赐材料、多氟多、永太科技、联化科技、深圳新星,6家龙头公司研发实力深度数据
  • 北京公司注册核名网站网络营销业务流程
  • 常用的设计网站有哪些如何查询一个网站的空间大小
  • 【题解】洛谷 P2330 [SCOI2005] 繁忙的都市 [生成树]