将对象组合成树型结构以表示部分-整体的层次结构

角色:
Component:抽象构件
Leaf:叶子构件
Composite:容器构件
Client:客户类
优点:
①可以清楚地定义分层次的复杂对象
②客户端可以一致的使用组合结构或其中单个对象
③可以形成复杂的树形结构
④更容易在组合体内加入对象构件
缺点:
①使设计变得更加抽象
②增加新构件时可能会产生一些问题,很难对容器中的构件类型进行限制。
适用场景:
①需要表示一个对象整体或部分层次,在具有整体和部分的层次结构中,希望通过一种方式忽略整体与部分的差异,可以一致地对待它们。
②让客户能够忽略不同对象层次的变化,客户端可以针对抽象构件编程,无须关心对象层次结构的细节
③对象的结构是动态的并且复杂程度不一样,但客户需要一致地处理它们。
代码实现:
abstract class AbstractFile{
protected String name;
public void printName(){
System.out.println(name);
}
}
class Folder extends AbstractFile{
public Folder(String name){
this.name = name;
}
}
class File extends AbstractFile{
public File(String name){
this.name = name;
}
}
public class CompositePattern{
public static void main(String[] args){
AbstractFile folderA = new Folder("folderA");
folderA.printName();
AbstractFile fileB = new File("fileB");
fileB.printName();
}
}

被折叠的 条评论
为什么被折叠?



