decorator uml
simple factory ump