Design pattern examples for software engineering