# Design Patterns applied to SharePoint Framework ## Summary In software engineering, a design pattern is a general repeatable solution to a commonly occurring problem in software design. A design pattern isn't a finished design that can be transformed directly into code. It is a description or template for how to solve a problem that can be used in many different situations. I wanted to write this for so long but studying this subject, practicing and achieving the desired results its not an easy task. If you come from the server development background like I do (C#/.NET Development for Farm solutions) or WCF services, REST API, or event ASP.NET WebForms or MVC, and if you worked in large projects then there is a big chance that you used some programming design patterns, at least the singleton pattern you had to use at some point in time. As a Solutions Architect I was responsible to design and deliver large projects where code maintenance is one of the hardests things to achieve in huge projects, we had to create code that everyone can read, interpret and where changes can be applied easily. Design Patterns allow you to create clean and understandable code that everyone can understand (with some experience) and introduce changes after delivery to production ## Used SharePoint Framework Version ![drop](https://img.shields.io/badge/version-GA-green.svg) ## Applies to * [SharePoint Framework](https:/dev.office.com/sharepoint) * [Microsoft 365 tenant](https://learn.microsoft.com/sharepoint/dev/spfx/set-up-your-development-environment) ## Prerequisites > N/A ## Solution Solution|Author(s) --------|--------- react-designpatterns-typescript | Luis Valencia [@levalencia](https://www.twitter.com/levalencia) ## Version history Version|Date|Comments -------|----|-------- 1.0|May 10, 2018|Initial release, first category of patterns ## Disclaimer **THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT.** --- ###### PART 1. Creational Design Patterns Series: 1. [Factory method](./FactoryMethod) 1. [Abstract factory](./AbstractFactory) 3. [Builder](./Builder) 4. [Singleton](./Singleton)