Summary

This document provides an overview of design patterns in software engineering, explaining what they are, and how they can be useful for solving common problems in object-oriented programming This document also discusses the benefits of patterns, such as providing inspiration and enabling easier communication amongst developers.

Full Transcript

**Concepts** If a problem occurs over and over again and a solution to that problem has been used effectively, then that solution is described as a *pattern*. The design patterns are language-independent strategies for solving common object-oriented design problems. In software engineering, a desi...

**Concepts** If a problem occurs over and over again and a solution to that problem has been used effectively, then that solution is described as a *pattern*. The design patterns are language-independent strategies for solving common object-oriented design problems. In software engineering, a design pattern is a general repeatable solution to a commonly occurring problem in software design. A design pattern is a description or template for how to solve a problem that can be used in many different situations. Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice. **Advantages or Benefits of Using Design Pattern** **Benefits of Design Patterns** Inspiration - Patterns don\'t provide solutions, they inspire solutions. - Patterns explicitly capture expert knowledge and design tradeoffs and make this expertise widely available. - Ease the transition to object-oriented technology. Patterns improve developer communication - Pattern names form a vocabulary. Help document the architecture of a system - Enhance understanding. - Enable large-scale reuse of software architectures - Analyze the more abstract areas of a program by providing concrete, well-tested solutions. - Help you write code faster by providing a clearer picture of how you are implementing the design. - Encourage code reuse and accommodate change by supplying well-tested mechanisms for delegation and composition, and other non-inheritance based reuse techniques. - Encourage more legible and maintainable code by following well-understood paths. Increasingly provide a common language and jargon for a programmer.

Use Quizgecko on...
Browser
Browser