Ecco come comprendo il pattern composito:
Nel pattern composito, un oggetto radice è composto da oggetti che possono essere ulteriormente composti. Inoltre, per essere considerati compositi, tutti questi oggetti espongono un'interfaccia comune.
La mia domanda appare due volte in corsivo sotto. Un esempio dato da un mio mentore è un filesystem rappresentato da oggetti:
interface Node {
  public int size();
}
class Folder implements Node {
  List<Node> contents;
  public int size() {
    int size = 0;
    for (Node n : contents)
      size += n.size();
    return size;
  }
}
class File implements Node {
  int size;
  public int size() {
    return size;
  }
}
Questo sembra abbastanza pulito. Ha una bella proprietà di cui mi sto chiedendo:
-  Una chiamata   
size()suFolderchiamasize()su tutti membroNodess, non c'è nessuna condizione che proteggesize()chiama membroNodes. Se esistesse una condizione che proteggevasize()chiamate sui bambiniNodes, la struttura non sarebbe più il modello Composito? 
 Per chiarire, darò un altro esempio. Supponiamo che un oggetto   Person    possa   grab()    e   Person    sia composto da 2% diHand se 1% diMouth. Sia   Hand    che   Mouth    possono   grab()   . In un'istanza di   Person   , la chiamata di   person.grab()    chiamerà   grab()    su  uno  dei membri in grado di   grab()   . Ad esempio, la sinistra   Hand    sarà   grab()    se la destra   Hand    è già piena, e entrambi   Hand    prenderà se l'oggetto è pesante. 
È un pattern composito, anche se ci sono guardie condizionali sulle chiamate dei membri?