I programvareutvikling er et et designmønster som identifiserer vanlige kommunikasjonsmønstre mellom objekter. Slike mønstre øker fleksibiliteten for utføring av kommunikasjon.