About the Author xv
About the Technical Reviewer xvii
Introduction xix
Part I: Introduction 1
Chapter 1: The SOLID Design Principles 3
Chapter 2: The Functional Perspective 25
Part II: Creational Patterns 35
Chapter 3: Builder 37
Chapter 4: Factories 73
Chapter 5: Prototype 93
Chapter 6: Singleton 113
Part III: Structural Patterns 131
Chapter 7: Adapter 133
Chapter 8: Bridge 159
Chapter 9: Composite 167
Chapter 10: Decorator 179
Chapter 11: Façade 205
Chapter 12: Flyweight 219
Chapter 13: Proxy 227
Chapter 14: Value Object 251
Part IV: Behavioral Patterns 259
Chapter 15: Chain of Responsibility 261
Chapter 16: Command 273
Chapter 17: Interpreter 287
Chapter 18: Iterator 305
Chapter 19: Mediator 321
Chapter 20: Memento 335
Chapter 21: Null Object 343
Chapter 22: Observer 353
Chapter 23: State 383
Chapter 24: Strategy 401
Chapter 25: Template Method 411
Chapter 26: Visitor 417
Index 457
Implement design patterns in .NET 6 using the latest versions of the C# and F# languages. This book provides a comprehensive overview of the field of design patterns as they are used in today’s developer toolbox. In addition to the functional builder, asynchronous factory method, generic value adapter, and composite proxies, this new edition introduces topics such as Decorator Cycle Policies Functional Commands, a Transformer variation of the Visitor pattern, and factories that can perform Object Tracking and Bulk Replacement.
Using the C# and F# programming languages, Design Patterns in .NET 6 explores the classic design pattern implementations and discusses the applicability and relevance of specific language features for implementing patterns. You will learn by example, reviewing scenarios where patterns are applicable. Former C# MVP and patterns expert Dmitri Nesteruk demonstrates possible implementations of patterns,discusses alternatives and pattern relationships, and illustrates the way that a dedicated refactoring tool (JetBrains Rider) can be used to implement design patterns with ease.
Developers who have some experience in the C# language and want to expand their comprehension of the art of programming by leveraging design approaches to solve modern problems