设计模式(第九式:组合模式)

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

实现:
    定义一个书架

    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中应该是有用到的,具体什么地方没注意过

原文地址:https://www.cnblogs.com/ben-mario/p/10717825.html