Source: http://st.inf.tu-dresden.de/files/teaching/ss19/st/slides/22-st-design-patterns.pdf