pattern design principle