decorator vs factory pattern