概念:
组合模式:将对象组合成属性结构,以表示“部分——整体“的层次结构,是的用户对单个对象和组合对象的使用具有一致性。
实现:
定义一个书架
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中应该是有用到的,具体什么地方没注意过