Design patterns are programming language independent strategies for solving a common problem . That means a design pattern represents an idea, not a particular implementation. By using design patterns, you can make your code more flexible, reusable, and maintainable.