Friday 29 November 2019

Difference between design pattern and architecture pattern

In Simple English way
Both are synonym to design. Architecture is usually used for technical aspect of design. Architecture in day to day lang is used for building design too. But its way complex than just a word. In easy words, you can say architecture is buildind design and design is product of smaller objects like interior and furniture.

or
The terms are related but only one is also the other. Architects are designers... but designers are not necessarily architects. Architects work in the medium of structure, and sometimes sculpture, but must balance art with science, for two main purposes: 1) protecting people's lives, especially in the case of emergency, i.e. a building fire AND 2) fachieving design criteria such as how to provide bodily comfort when there is a cold outside temperature, or collect water from a rooftop and lavatories for use later, or various other useful science-driven pursuits...

In Simple Technical english way
Design pattern are basically the solution to recurring problem with respect to OOPs world.we have problem and have its proposed solution.eg.factory pattern,singleton pattern etc.
Architecture is about how your code is structured like organisation of Libraries,components or any other thing that needed.MVC,MVP,MVVM are examples of architecture.
-------------------------------
A system can have multiple levels and scope:
  1. Function- implementation of a functiom
  2. Class- impelementation of a class
  3. Project- relations between classes
  4. Solution- relations between projects
  5. System- relations between solutions
Design patterns target the first 3 scopes. It helps to have a better structure and maintainability.
Architecture is the highest level design of a solution as a whole. Usually, you think big there, as you don't go too much into details of different components. Architecture ensures that different parts of solution can easily talk with one another either directly or through a mediator, it concerns security, performance, non functional deployment and system requirements. Architecture takes care of 4 and 5 scopes and sometimes 3.
Design patterns don't really grasp those problems, because they are meant to serve as a template for a part of isolated problem: to create something, to delegate work, to simplify structure… Architecture is meant to combine everything in a working system.
-----------------------------

#1....
Design pattern term is mostly used to identify some object level solutions addressing common design problems following object oriented design principles. These patterns are technology/platform agnostic, pure and domain independent. So they rely on only few assumptions. Main motivation is to design more maintainable and extensible objects by loosen up object dependencies.
Software architecture term refers to broader concept than library level object design. It is about designing and integrating databases, libraries, services, servers, configuration, communication protocols, workflows etc. Software architect should consider every non-functional requirement (reliability, scalability etc.) and choose paradigms and technologies based on them.
MVC is a compound UI design pattern which could be considered as UI architecture in the narrow sense. UI is only a one part of a software architecture problem. That’s why I would call MVC as design pattern rather than an architecture. Sometimes we call it enterprise architecture pattern too. (see Fowler, PEAA, 2003)
#2.....
It's difficult to differentiate the two terms, but I would say the architecture of an application refers to the larger structure and organization of the application, while a design pattern refers to a method of solving a specific type of problem, typically much more focused and lower level than the global structure of the system. For example, a design pattern can be a solution to the problem of an object's behaviour depending on its internal state, or when the behaviour of an object depends on the state of other objects in the system. With architectural level design, you aren't worried about details of how each piece is going to work, you're concerned with how to structure all the pieces together.
I would say an MVC is somewhere in between a design pattern and an architectural pattern. With an MVC (Laravel is the one I'm most used to), you want to separate the system models (or distinct actors in the system), from the controllers, which manipulate and process models, from the views, which are rendered based on data passed from the controller after processing and manipulating models. Typically, when a url is entered, that triggers a method on a controller to be called. That controller will create the necessary models, do some processing, and finally pass the processed data to the view, which renders the html. 

No comments:

Post a Comment

Baisic Useful Git Commands

  Pushing a fresh repository Create a fresh repository(Any cloud repository). Open terminal (for mac ) and command (windows) and type the be...