In C#, one of the most important and commonly used design patterns is the Singleton pattern. The Singleton pattern ensures that only one instance of a class is created throughout the lifetime of an application, providing a global point of access to that instance.
Singleton
Factory Pattern
The Factory pattern is used to create different types of articles (TextArticle and ImageArticle) through the ArticleFactory abstract class and its concrete implementations.
Observer pattern
The Observer pattern is used to notify observers (ArticleObserver) when the state of an article (ArticleSubject) changes, such as updating the article title.
Decorator Pattern
The Decorator pattern is used to dynamically add additional behaviors to articles, such as adding comments (ArticleWithComments) or tags (ArticleWithTags) to an article.
Strategy Pattern
The Strategy pattern is used to define different publishing strategies (InstantPublishingStrategy and ScheduledPublishingStrategy) and allow the ArticleContext to switch between them dynamically.
Repository Pattern
The Repository pattern is used to encapsulate data access logic for articles through the IArticleRepository interface and its concrete implementation ArticleRepository.