Skip to content

Shikha-code36/Design-Patterns-in-Python

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 

Repository files navigation

Design-Patterns-in-Python

Design Patterns

  • What's a design pattern? What does the pattern consist of?

    • Design patterns are conventional responses to typical issues that arise in software design. To fix a reoccurring design issue in your code, you can modify them like pre-made blueprints. Algorithms are distinct from it. A pattern is a higher-level description of a solution, but an algorithm always specifies a precise set of operations that can accomplish a particular goal.

    • What does the pattern consist of?

      • Most patterns are described very formally so people can reproduce them in many contexts. Here are the sections that are usually present in a pattern description:
        • Intent of the pattern briefly describes both the problem and the solution.
        • Motivation further explains the problem and the solution the pattern makes possible.
        • Structure of classes shows each part of the pattern and how they are related.
        • Code example in one of the popular programming languages makes it easier to grasp the idea behind the pattern.
  • History of patterns

    • The standard responses to typical issues in object-oriented design are patterns. When a solution is used repeatedly in several projects, someone ultimately names it and provides a detailed description of the solution. In essence, that is how a pattern is found.
    • Christopher Alexander first introduced the idea of patterns in his book A Pattern Language: Towns, Buildings, Construction. A "language" for creating the urban environment is described in the book. This language's building blocks are patterns or the units of this language are patterns.
    • Four writers — Erich Gamma, John Vlissides, Ralph Johnson, and Richard Helm — adopted the concept. They applied the idea of design patterns to programming in their 1994 book Design Patterns: Elements of Reusable Object-Oriented Software. The book had 23 patterns that addressed various object-oriented design issues.
    • Since then, dozens of other object-oriented patterns have been discovered. The “pattern approach” became very popular in other programming fields, so lots of other patterns now exist outside of object-oriented design as well.
  • Why should I learn patterns?

    In actuality, you could be able to function as a programmer for many years without being aware of any patterns. Many people act in that manner. However, even in that scenario, you can unknowingly be using some patterns. Why then would you bother knowing them?

    • A collection of tried-and-true answers to typical issues in software design is known as a design pattern. Knowing patterns is helpful even if you never run into these issues since it teaches you how to approach any issue using object-oriented design principles.
    • You and your team members can communicate more effectively if you and they speak the same language that design patterns define. You can simply propose, "Oh, just use a Singleton for that," and everyone will comprehend what you mean. If you are aware of the pattern and its name, there is no need to describe what a singleton is.
  • Classification of patterns

    • Design patterns differ by their complexity, level of detail and scale of applicability to the entire system being designed. We can understand it with an example of the development of roads : you can make an intersection safer by either installing some traffic lights or building an entire multi-level interchange with underground passages for pedestrians.
    • The most basic and low-level patterns are often called idioms. They usually apply only to a single programming language.
    • Architectural patterns are the most widespread and high-level patterns. Developers can use almost any language to implement these patterns. They can be used to create the architecture of a whole application, unlike other patterns.
    • All patterns can also be grouped according to their intent or goal. Three basic categories of pattern are covered in this book:
      • Creational patterns: Creational patterns offer methods for creating objects that boost reusability and flexibility.
      • Structural patterns: It explain how to assemble objects and classes into larger structures, while keeping these structures flexible and efficient.
      • Behavioral patterns: It take care of effective communication and the assignment of responsibilities between objects.

SOURCE - geeksforgeeks and javatpoint