bir design pattern
.
nesnelerin başka nesneleri teorik olarak içerdiği yapılarda kullanılır. teorik olarak üç temel sınıf vardır: component
, container
, leaf
bir ağaç yapısını canlandırdığınızda, diğer dalları içeren bir dal composite, başka bir dal içermeyen dallar da leaf olarak adlandırılır. ikisi de aynı zamanda birer component'dır.
component bir class
, abstact class
ya da interface olabilir. ağacın dallarına tipinden bağımsız olarak davranabilmemiz için, hepsinin ortak noktalarını component isimli sınıfta toplarız. hem composite, hem de leaf sınıfları da bu tipten inherit ya da implement ettikleri için de, takas edilebilir olurlar.
composite, component tipinden türeyen ya da interface'i implement eden bir sınıftır. ayrıca, başka component'ları içerebilmesi için bir yapıya sahiptir. kendisi de leaf de component'tan türediği için, component tipinden nesneleri kapsayabilmesi demek hem diğer dal gruplarını(composite) hem de yalnız dalları(leaf) kapsayabildiği anlamına gelir.
leaf, başka bir dal kapsayamayacak olan, component sınıfından türemiş bir sınıftır.