The easiest way to learn design patterns
$9.99
Minimum price
$24.99
Suggested price

The easiest way to learn design patterns

With C# code samples using .NET 6 templates

About the Book

Design patters are something that you will need to get familiar with as a programmer who works with object oriented languages. And this is primarily because they represent well-defined solutions to common software development problems. So, instead of thinking through all the details of your solution, you can simply check if any of the existing design patterns can be used. You won’t have to reinvent the wheel.

The main problem with design patterns is that they are not necessarily easy to learn. Many developers, especially the ones who don’t have a lot of software-building experience, struggle with them. But if you do struggle with them, it may prevent you from getting a programming job at a reputable organization. After all, recruiting managers often ask questions about design patterns. Otherwise, not knowing design patterns will make you less effective as a software developer, which will slow down your career progress.

The main reason why design patterns are so hard to learn is because of the way they are normally taught. Usually, if you pick pretty much any book on design patterns or open pretty much any online article about them, it would provide a collection of design patterns that you would need to go through. You would then have to got through each of them, try your best to understand the principles behind it and only then try to figure out how to apply it in a real-life situation.

It's a tedious process that doesn't always bring about the right results. It's not uncommon for software developers to memorize just a handful of design patterns that they have been using in their own projects. The remaining ones have been forgotten as soon as they've been learned. And it's hard to figure out which design pattern applies in which situation if you only remember a handful of them.

This book provides a different approach. It uses a methodology that makes it easy to learn design patterns. So, you no longer have to brute-force your way through them. The process of effective learning is not about memorization. It's about associations. You learn new things easily when you can clearly see how new facts related to your existing knowledge. And this is precisely the method that this book is built around.

You won't have to brute-force your way into design patterns. In fact, you won't even start with the design patterns. First, we will go through a list of common problems that software developers are required to solve. Those are the things that every software developer can associate with. Even if you haven't faced a particular type of a problem yet, you will still be able to easily understand its description. For each of these problems, we will go through the design patterns that can solve it. And for each one of them, you will go through its core principle and the description of how it can solve this type of a problem. Only then you will be invited to examine this particular design pattern in detail, so you can understand how to implement it in your own code.

This structure of the book also makes it valuable as a reference book. Even when you don't know or don't remember design patterns, looking them up becomes easy. What you need to find is a description of the type of a problem you are trying to solve. And then you will be able to follow it to find the actual design patterns that you can apply to solve it.

Therefore this book is not only an effective learning tool. It's also a reference book that's incredibly easy to navigate. It's been structured in such a way that you'll be able to find the right answer in seconds.

  • Share this book

  • Categories

    • Computers and Programming
    • C#
    • Computer Science
  • Feedback

    You must own a copy of this Book to access the forums.

    Email the Author(s)

About the Author

Fiodar Sazanavets
Fiodar Sazanavets

Fiodar Sazanavets is an experienced lead software engineer whose main area of expertise is Microsoft stack, which includes ASP.NET (Framework and Core), SQL Server, Azure, and various front-end technologies. Fiodar is familiar with industry-wide best practices, such as SOLID principles, software design patterns, automation testing principles (BDD and TDD) and microservices architecture.

Fiodar has built his software engineering experience while working in a variety of industries, including water engineering, financial, retail, railway and defence. He has played a leading role in various projects and, as well as writing software, he gained substantial experience in architecture and design.

Fiodar is an author of a number of technical books and online courses. He regularly writes about software development on his personal website, https://scientificprogrammer.net. He is also available to book for personal mentoring sessions via https://mentorcruise.com/mentor/fiodarsazanavets.

Bundles that include this book

$39.98
Suggested price
$9.99
Bundle Price

Reader Testimonials

Bella Rabbit
Bella Rabbit

Great Resource!

The title says it all! This book showed me the easiest way to learn design patterns… and it did so well because the book has its own methodology. Pick it up and find out precisely what I mean. Even with familiarity on the topic, it can teach a book a two. My friend here tried it out, who has experience in the subject, and she said she found some pointers unexpectedly useful. For her, it also had many design patterns that could be used as a quick reference. It’s navigation friendly.

Table of Contents

  • Introduction
    • What design patterns are
    • Why would you want to learn design patterns
    • Why design patterns are hard to learn
    • The goal of this book
    • The structure of this book
  • About the author and his mission
    • Getting in touch
    • Helping to spread the word
  • Part 1: SOLID principles and why they are important
  • 1. Single responsibility principle
    • What is single responsibility principle
    • The importance of single responsibility principle
    • The concept of class cohesion
    • Conclusion
  • 2. Open-closed principle
    • What is open-closed principle
    • Implementing the open-closed principle in C#
    • Conclusion
  • 3. Liskov substitution principle
    • Implementing Liskov substitution principle in C#
    • Conclusion
  • 4. Interface segregation principle
    • What is interface segregation principle
    • Importance of interface segregation
    • When NotImplementedException is appropriate
  • 5. Dependency inversion principle
    • What is dependency inversion principle
    • Why dependency inversion principle is important
    • Dependency inversion is not only useful in unit tests
  • Part 2: The problems that design patterns are intended to solve
  • 6. Not knowing what object implementations you’ll need ahead of time
    • Suitable design patterns
  • 7. Making several exact copies of a complex object
    • Suitable design patterns
  • 8. Using many instances of an object while keeping code running smoothly
    • Suitable design patterns
  • 9. Using the same single instance of an object throughout the application
    • Suitable design patterns
  • 10. Third party components aren’t directly compatible with your code
    • Suitable design patterns
  • 11. Adding new functionality to existing objects that cannot be modified
    • Suitable design patterns
  • 12. Accessing complex back-end logic from the presentation layer
    • Suitable design patterns
  • 13. User interface and business logic are developed separately
    • Suitable design patterns
  • 14. Building a complex object hierarchy
    • Suitable design patterns
  • 15. Implementing complex conditional logic
    • Suitable design patterns
  • 16. Multiple object instances of different types need to be able to communicate with each other
    • Suitable design patterns
  • 17. Multiple stages of processing are needed
    • Suitable design patterns
  • 18. The system is controlled by complex combinations of inputs
    • Suitable design patterns
  • 19. Ability to undo an action that has been applied
    • Suitable design patterns
  • 20. Ability to traverse a collection without knowing its underlying structure
    • Suitable design patterns
  • 21. Creating a family of related algorithms
    • Suitable design patterns
  • 22. Summary of the problems design patterns are intended to solve
  • Part 3: Design patterns demonstrated in C#
  • 23. Design pattern categories
  • Creational design patterns
  • 24. Factory Method
    • Prerequisites
    • Factory Method implementation example
    • Benefits of using Factory Method
    • Caveats of using Factory Method
  • 25. Abstract Factory
    • Prerequisites
    • Abstract Factory implementation example
    • Benefits of using Abstract Factory
    • Caveats of using Abstract Factory
  • 26. Builder
    • Prerequisites
    • Builder implementation example
    • Benefits of using Builder
    • Caveats of using Builder
  • 27. Prototype
    • Prerequisites
    • Prototype implementation example
    • Benefits of using Prototype
    • Caveats of using Prototype
  • 28. Singleton
    • Prerequisites
    • Singleton implementation example
    • Benefits of using Singleton
    • Caveats of using Singleton
  • Structural design patterns
  • 29. Adapter
    • Prerequisites
    • Adapter implementation example
    • Benefits of using Adapter
    • Caveats of using Adapter
  • 30. Bridge
    • Prerequisites
    • Bridge implementation example
    • Benefits of using Bridge
    • Caveats of using Bridge
  • 31. Composite
    • Prerequisites
    • Composite implementation example
    • Benefits of using Composite
    • Caveats of using Composite
  • 32. Decorator
    • Prerequisites
    • Decorator implementation example
    • Benefits of using Decorator
    • Caveats of using Composite
  • 33. Facade
    • Prerequisites
    • Facade implementation example
    • Benefits of using Facade
    • Caveats of using Facade
  • 34. Flyweight
    • Prerequisites
    • Flyweight implementation example
    • Benefits of using Flyweight
    • Caveats of using Flyweight
  • 35. Proxy
    • Prerequisites
    • Proxy implementation example
    • Benefits of using Proxy
    • Caveats of using Proxy
  • Behavioral design patterns
  • 37. Command
    • Prerequisites
    • Command implementation example
    • Benefits of using Command
    • Caveats of using Command
  • 36. Chain of Responsibility
    • Prerequisites
    • Chain of Responsibility implementation example
    • Benefits of using Chain of Responsibility
    • Caveats of using Chain of Responsibility
  • 38. Iterator
    • Prerequisites
    • Iterator implementation example
    • Benefits of using Iterator
    • Caveats of using Iterator
  • 39. Mediator
    • Prerequisites
    • Mediator implementation example
    • Benefits of using Mediator
    • Caveats of using Mediator
  • 40. Memento
    • Prerequisites
    • Memento implementation example
    • Benefits of using Memento
    • Caveats of using Memento
  • 41. Observer
    • Prerequisites
    • Observer implementation example
    • Benefits of using Observer
    • Caveats of using Observer
  • 42. State
    • Prerequisites
    • State implementation example
    • Benefits of using State
    • Caveats of using State
  • 43. Strategy
    • Prerequisites
    • Strategy implementation example
    • Benefits of using Strategy
    • Caveats of using Strategy
  • 44. Template Method
    • Prerequisites
    • Template Method implementation example
    • Benefits of using Template Method
    • Caveats of using Template Method
  • 45. Visitor
    • Prerequisites
    • Visitor implementation example
    • Benefits of using Visitor
    • Caveats of using Visitor
  • Epilogue

The Leanpub 60-day 100% Happiness Guarantee

Within 60 days of purchase you can get a 100% refund on any Leanpub purchase, in two clicks.

See full terms

Do Well. Do Good.

Authors have earned$11,600,486writing, publishing and selling on Leanpub, earning 80% royalties while saving up to 25 million pounds of CO2 and up to 46,000 trees.

Learn more about writing on Leanpub

Free Updates. DRM Free.

If you buy a Leanpub book, you get free updates for as long as the author updates the book! Many authors use Leanpub to publish their books in-progress, while they are writing them. All readers get free updates, regardless of when they bought the book or how much they paid (including free).

Most Leanpub books are available in PDF (for computers), EPUB (for phones and tablets) and MOBI (for Kindle). The formats that a book includes are shown at the top right corner of this page.

Finally, Leanpub books don't have any DRM copy-protection nonsense, so you can easily read them on any supported device.

Learn more about Leanpub's ebook formats and where to read them

Write and Publish on Leanpub

You can use Leanpub to easily write, publish and sell in-progress and completed ebooks and online courses!

Leanpub is a powerful platform for serious authors, combining a simple, elegant writing and publishing workflow with a store focused on selling in-progress ebooks.

Leanpub is a magical typewriter for authors: just write in plain text, and to publish your ebook, just click a button. (Or, if you are producing your ebook your own way, you can even upload your own PDF, EPUB and/or MOBI files and then publish with one click!) It really is that easy.

Learn more about writing on Leanpub