zoukankan      html  css  js  c++  java
  • 设计模式(第九式:组合模式)

    概念:
        组合模式:将对象组合成属性结构,以表示“部分——整体“的层次结构,是的用户对单个对象和组合对象的使用具有一致性。

    实现:
        定义一个书架

        public interface Bookshelf {
            /**
            * 书架的一个基本操作,其实也可以不要,这里是为了区分当前累做什么的
            */
            void operation();
    
        }

        定义一个存放书的空间

        public class Bookroom implements Bookshelf {
    
            List<Bookshelf> list = new ArrayList<>();
    
            public void addBookshelf(Bookshelf bookshelf){
                list.add(bookshelf);
            }
    
            public void remove(Bookshelf bookshelf){
                list.remove(bookshelf);
            }
    
            public List<Bookshelf> getChild(){
                return list;
            }
    
            @Override
            public void operation() {
                System.out.println("这是用来存放书的");
            }
        }

        要被存放的书

        public class Book implements Bookshelf{
    
            @Override
            public void operation() {
                System.out.println("你要读这本书么?");
            }
        }

    分析:
        1.其实这个倒不是很难,但是理解起来不是那么直观,可能因为类名会影响思维逻辑,但不影响用文字描述,方便理解:
            a.两个类实现一个共同的接口,目的是为了方便对象造型时统一。
            b.这个接口不一定非需要一个方法,可以没有或者多个
            c.其中一个类中存放了一个接口类型的list,这样就能做出层级感,另一个接口中没有存list,所以就只能是末节点。
        2.其实相当于搞了一个层级结构出来,这样做不利于我们扩展行为,而且对节点的类型也有限制,但却不借助其他规定的情况下解决了层级存储的结构模式。
        3.适用场景:
            a.在做文件系统的时候应该可能会用到
            b.一般如果单纯的传递数据,基本都适用json的格式,所以这个在开发过程中用到的不是很多
            ...

    经典框架中使用的:
        觉得spring中应该是有用到的,具体什么地方没注意过

  • 相关阅读:
    mock数据
    Vuex
    React生命周期
    Vue基础知识
    前端面试题
    NodeJS巅峰之作
    Oracle数据库
    CSS Bootstrap jsp开发 前端遇到的一些问题。
    如何寻找node.js 与win7兼容的版本?eclipse中引入bootstrap。
    Window 常用命令
  • 原文地址:https://www.cnblogs.com/ben-mario/p/10717825.html
Copyright © 2011-2022 走看看