您的位置:首页 > 新闻 > 会展 > 上海app开发外包_免费建站网站靠谱吗_东莞网站seo推广_最好看免费观看高清大全

上海app开发外包_免费建站网站靠谱吗_东莞网站seo推广_最好看免费观看高清大全

2025/2/24 3:06:05 来源:https://blog.csdn.net/2302_76363587/article/details/145769590  浏览:    关键词:上海app开发外包_免费建站网站靠谱吗_东莞网站seo推广_最好看免费观看高清大全
上海app开发外包_免费建站网站靠谱吗_东莞网站seo推广_最好看免费观看高清大全

1.组合设计模式实战 文件展示 树叶子节点

  • 组合设计模式

    • 又叫部分整体模式,将对象组合成树形结构以表示“部分-整体”的层次结构,可以更好的实现管理操作
    • 组合模式使得用户可以使用一致的方法操作单个对象和组合对象
    • 部分-整体对象的基本操作多数是一样的,但是应该还会有不一样的地方
    • 核心:组合模式可以使用一棵树来表示
  • 角色

    • 组合部件(Component):它是一个抽象接口,表示树根,例子:总行
    • 合成部件(Composite):和组合部件类似,也有自己的子节点,例子:总行下的分行
    • 叶子(Leaf):在组合中表示子节点对象,注意是没有子节点,例子:最小地方的分行
  • 代码示例

    import java.util.ArrayList;
    import java.util.List;/*** 根节点,抽象类,通用的属性和方法*/
    abstract class Root {private String name;public Root(String name) {this.name = name;}public void setName(String name) {this.name = name;}public String getName() {return name;}public abstract void addFile(Root root);public abstract void display(int depth);
    }/*** 具体的文件夹,里面可以添加子文件夹或文件*/
    class Folder extends Root {List<Root> folders = new ArrayList<>();public Folder(String name) {super(name);}public void setFolders(List<Root> folders) {this.folders = folders;}public List<Root> getFolders() {return folders;}@Overridepublic void addFile(Root root) {folders.add(root);}@Overridepublic void display(int depth) {StringBuilder sb = new StringBuilder();for (int i = 0; i < depth; i++) {sb.append(" ");}// 打印横线和当前文件名System.out.println(sb + this.getName());for (Root r : folders) {// 每个下级,横线多2个r.display(depth + 2);}}
    }/*** 叶子节点:这个类没有节点,不用存储其他子类数组*/
    class File extends Root {public File(String name) {super(name);}@Overridepublic void addFile(Root root) {}@Overridepublic void display(int depth) {StringBuilder sb = new StringBuilder();for (int i = 0; i < depth; i++) {sb.append(" ");}// 打印横线和当前文件名System.out.println(sb + this.getName());}
    }public class Main {public static void main(String[] args) {Folder root = new Folder("C://");Folder desktop = new Folder("桌面");Folder myComputer = new Folder("我的电脑");File cFile = new File("C文件");root.addFile(desktop);root.addFile(myComputer);root.addFile(cFile);File javaFile = new File("HelloWorld.java");desktop.addFile(javaFile);root.display(0);}
    }
    
  • 优点

    • 客户端只需要面对一致的对象而不用考虑整体部分或者节点叶子的问题
    • 方便创建出复杂的层级结构
  • 缺点

    • 客户端需要花更多时间理清类之间的层次关系

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com