factory builder adapter decorator proxy facade strategy command state chain