组合模式:
将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。
适用性:
你想表示对象的部分-整体层次结构。
你希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。
例子:
public abstract class AbstractCompany
{
private string companyName = null ;
public void Add(AbstractCompany comp) ;
public void Remove(AbstractCompany comp) ;
public void Display() ;
}
public class Company extends AbstractCompany
{
ArrayList<AbstractCompany> companyList = new ArrayList<AbstractCompany>() ;
public Company(string companyName)
{
this.companyName = companyName ;
}
public void Add(AbstractCompany comp)
{
companyList.add(comp) ;
}
public void Remove(AbstractCompany comp)
{
companyList.remove(comp) ;
}
public void Display()
{
foreach( AbstractCompany comp in companyList )
{
System.out.println(this.companyName) ;
companyList.Display() ;
}
}
}
public class Department extends AbstractCompany
{
public Department(string companyName)
{
this.companyName = companyName ;
}
public void Add(AbstractCompany comp)
{
}
public void Remove(AbstractCompany comp)
{
}
public void Display()
{
System.out.println(this.companyName) ;
}
}
public class Test
{
public static void main()
{
AbstractCompany root = new Company("总公司") ;
AbstractCompany devel = new Department("研发部") ;
AbstractCompany test = new Department("测试部") ;
root.Add(devel) ;
root.Add(test) ;
AbstractCompany branch = new Company("分公司一") ;
AbstractCompany devel1 = new Department("研发部一") ;
AbstractCompany testl = new Department("测试部一") ;
branch.Add(devel1) ;
branch.Add(test1) ;
root.Add(branch) ;
root.Display() ;
}
}