“Modern web appstend to be more (orequaly) complexon front endrather on back end”
Complexity is handled byapplying architecturalapproach
Namespace pattern “Namespacing is a technique employed to avoid collisions with other objects or variables in the global namespace” Goal: avoid names collision and provide facilities to organize blocks of functionality into easily managable groups
Module pattern “The module pattern is a popular design that pattern that encapsulates privacy, state and organization using closures” Goal: It provides a way of wrapping a mix of public and private methods and variables, protecting pieces from leaking into the global scope and accidentally colliding with another developers interface
Facade pattern “ The facade pattern provides a convenient higher-level interface to a larger body of code, hiding its true underlying complexity. Think of it as simplifying the API being presented to other developers” Goal: to hide implementation-specific details about a body of functionality contained in individual modules. The implementation of a module can change without the clients really even knowing about it.
Mediator pattern “ The mediator is a behavioral design pattern that allows us to expose a unified interface through which the different parts of a system may communicate” Goal: promotes loose coupling by ensuring that instead of components referring to each other explicitly, their interaction is handled through this central point. This can help us decouple systems and improve the potential for component reusability.
Observer pattern “ The Observer is a design pattern which allows an object (known as a subscriber) to watch another object (the publisher), where we provide a means for the subscriber and publisher form a listen and broadcast relationship” Goal: the promotion of loose coupling. Rather than single objects calling on the methods of other objects directly, they instead subscribe to a specific task or activity of another object and are notified when it occurs.