Dive IntoDESIGN PATTERNS

Design patterns help you solve commonly-occurring problems in software design. But you can’t just find a pattern and copy it into your program, the way you can with off-the-shelf functions or libraries. A pattern is not a specific piece of code, but a general concept for solving a particular problem. They are like pre-made blueprints that you can customize to solve a recurring design problem in your code.

The book Dive Into Design Patterns illustrates 22 classic design patterns, and 8 design principles that these patterns are based on.

Each chapter starts with a real-world software design problem, then solves it using one of the patterns.

Then we dive into a detailed review of the pattern’s structure and its variations, followed by a code example.

Then the books shows various applications of the pattern and teaches how to implement the pattern step by step, even in an existing program.

Each chapter concludes with a discussion of pros and cons of the pattern and explores its relations to, similarities with and differences from other patterns.

Why do you need to know patterns?

Ace interviews and reviews. Questions about patterns come up at almost every programming job interview and every performance review. Get more jobs and get that raise and promotion you so richly deserve.

Extend your programming toolkit. Patterns let you customize ready-made solutions rather than reinvent the wheel. Your code has fewer mistakes because you are using a proven, standard solution covering all hidden problems.

Communicate better with colleagues. Just share the name of the pattern rather than wasting an hour explaining the details of your cool design and its classes to other programmers. Get the glory without the sweat.

Who is this book for?

Pattern Beginners. If you have never studied patterns, the book explains the basic principles of object-oriented programming with real-life examples. Before diving into the patterns, we look at the design values and principles on which the patterns are built.

Pattern Refreshers. If you studied patterns a while ago, but have forgotten things, the ebook can refresh your memory as serve as a handy reference. Quickly find sections of interest without having to read it from start to finish.

Language Switchers. If you are switching to one of the OOP languages (Java, C# or PHP), you will easily grasp the essence of the text thanks to the many real-world examples and analogies, supported by helpful illustrations and diagrams.

What others say?

- I can’t say anything bad.
- Complex structures are explained in an easy to understand way.
- I believe it would be great if a few chapters on anti-patterns were added.

Overall, thank you very much for the high-quality material.

Evgeny Stelmashok

Russia

I liked everything, I read it only once for now. And I have not yet found anything that could be improved. I keep it in my favorites as a reference book.

Vladislav Karpenko

Russia

I use your website, and bought the book to support the project! I like
everything very much. Simple and user-friendly! Keep it up!

Maksim Berezin

Russia

To my surprise, the book is very well suited for different levels of
specialists. That’s why we even added a link to your website as a
recommendation.

I enjoyed the illustrations and the method of
presenting the material. Thank you for popularizing useful
educational materials.

Andrej Grekov

Russia

I believe the presentation is ideal: brief, without unnecessary discussion.
A clear description of the problem, a way to solve it, a pseudocode: all
you need is there. Illustrations also help a lot. If I need to remember why
one or another pattern is needed, I just look at the picture and I remember
everything.

This is what could be improved, in my opinion. Maybe a few more examples of
the practical application of a particular pattern. Without a code. Just a
description of the situation and its solution using a pattern. I.e.
real-life examples. I am, of course, more interested in Web development.

Andrej Senichev

Russia

I’m reading the book right now. The website has almost everything that is
written in the book, so technically I could have just read about it on the
website. As to what could be improved, it is difficult to say. Sometimes
you write about the same thing over and over 10 times, but many of us
(including myself) need it for initial understanding.

I would love to see more examples, maybe even without code. For example - you can talk with developers from different
industries and ask around, where and how they apply this or that pattern.

I’m an Android developer and some of your patterns are stacked on commonly
occurring screens. Maybe you should add some links to designs of other guys
as an example.

But overall the book is quite good. The pictures are cool. Sometimes it’s
hard to figure out what’s what, but what can you do? We must persevere.
Read again, try again.

It would be great to see the version for Kotlin. I actually rewrite your
examples in order to learn the language.

Dmitry Mitroshin

Russia

I started reading the book, and I’m very pleased with it. Great,
high-quality examples and schemes.

Taras Savranskij

Russia

My first impression is a positive one, the author should continue writing.
I’d like to buy the book for a friend. I understand that the only option is
to register under a new account.

Denis Zaharov

Belarus

I previously studied these patterns in the book titled “The Gang of Four”.
I liked the simplicity of descriptions in your book, as well as the
excellent usage examples. I use your book as a reference guide in order to
refresh my knowledge about a particular template or to search for a
template I may need at the moment. I can’t say anything about how the book
can be improved, because I haven’t even thought about it.

The author did a great job creating this book)

Dmitry Borodin

Russia

Thanks for the great material! I’m reading the book in sections, I really
like how the material is presented, user-friendly presentation on several
levels, interesting examples, clear illustrations. I can’t help but compare
it to Freeman’s “Design Patterns”, and the presentation in your book is
more informative in my opinion. It is convenient not only to read the book
in a sequential order, but to also use it as a reference guide.

I plan to use the materials you have collected to put together training
materials, reports inside and outside my company, in the context of
front-end development.

Andrej Alekseev

Russia

Truth be told, I bought the book to give back for the work the authors did
when creating the website, it helped me and continues to help + I was
interested to see how SOLID will be outlined.

I think it would be cool for newbies if there were c# examples as well,
although everything is quite clear anyway. Since I have a stable Internet
connection, I use the website as a reference guide instead of the book.

Note: the book is supplied with C# examples since spring, 2018.

Pavel Bobrovskij

Russia

I’m reading the book, it’s interesting, not boring, and it offers quite an
exciting and fresh perspective. I would love to see it a paperback edition
as well.

Dmitry Udovenko

Russia

Thank you for the book. The material is presented beautifully and in a
user-friendly manner. The examples are clear, the diagrams are accurate,
the illustrations are interesting. It works as a reference book, as well as
an introductory guide for the topic. I use it for both purposes.

Vladimir Lebed

Kazakhstan

I work as a C# developer. I had read an article online that included many
references to patterns. I went to Google and found your website, where I
read about the pattern that was of interest to me. Your information is very
well structured, but what I liked the most was the style of illustrations.
There is something home-like about them)) As a beginner, I really liked the
fact that the patterns are described from the point of view of the issues
that they solve, and not from the standpoint of the description of the
pattern itself. After reading the entire section on patterns on the
website, I realized that I wanted to buy the book to thank you for the work
you have done collecting and structuring the information.

I would like to comment only on one section - “Relationships with other
patterns”. Despite the fact that I read about all the patterns, I still
don’t understand what this section is about. Maybe you could add
illustrations there, or even remove this section altogether and add a
chapter about using combined patterns?

Daniil Doniy

Russia

The project as a whole, and the book in particular, make an excellent
impression. It would seem that there are quite a lot of books written on
this topic, but you have structured everything and made it rather fun)
Wonderful illustrations that help readers memorize everything in a fun way.

I started reading the book right after I purchased it. I’ve already learned
how to apply a couple of the described patterns quite confidently in
practice.

The book can be improved by publishing it on paper. That way you can give
it as a gift, for example.

I would like to see examples for PHP and Python, but as I understand, you
are already working on it.

Thank you for your work, and good luck in your endeavors!

Note: the book is supplied with PHP examples since spring, 2018.

Vasily Jurlov

Russia

I am completely satisfied with the purchase, I have already read the book
from cover to cover. I think that this is the most user-friendly book on
patterns I have ever read. I was really happy that I could read it on my
iPhone. Thank you for the great book!

Alexey Bezruchenkov

Ukraine

Excellent book, everything is explained in detail and presented in a
user-friendly manner. Special thanks for supporting multiple formats and
providing the readers with the ability to read the book on the go.

Alex Chugaev

Ukraine

I liked the book; from time to time I apply the solutions from the book in
my work.

I’m pleased with the book and very thankful for your work.

Dmitry Grusheckij

Russia

I would like to note right away that the book is beautifully illustrated)
The information about SOLID, and in particular, about the principle of
Barbara Liskov, is presented very well and in a user-friendly manner. I
found some new information for myself about the private members of the
base classes and the fact that you explicitly separate the restrictions on
preconditions by type and attribute values. It is really easier to figure
everything out this way.

It seemed strange that the book is over 30mb, though

Dmitry Bezik

Russia

The book is great. Excellent illustrations and examples. I am now preparing
a report on Design Patterns at work.

What can be added: examples with Anti-Patterns, what not to do.

Alexandre Fiveg

Munich, Germany

I do really enjoy your book. And would like to buy printed version to have it on my work place.

Sergii Aleksieiev

Київ, Україна

Everything that is explained using cats is always clear, and
the more allegories the better. I haven’t finished the book yet, but the
first impression is rather good, thank you!

Andrej Zemskov

Russia

I confirm that I bought this book, and am satisfied with the purchase,
otherwise I would not have bought it :)

I was looking to find some information on the most widely used patterns
(builder and factory), and I ended up finding the materials on the website.
And everything after that is history - I really liked the design of the
website and its structure; other similar resources usually just have a
description of random ~5 patterns, and the rest are “coming soon...”.

Your website is by far the BEST of all that I have come across on this
topic, and that’s why I bookmarked it and added the PDF version to the
offline library on my tablet. Although I am an experienced “pirate”, I am
always happy to pay an ADEQUATE price for the product that I use for my
professional activity.

Denis Zaharov

Russia

I almost finished reading the book. I will say right away that I liked it;
the book offers real-life examples, the descriptions and the pseudocode are
good.

Albert Gizetdinov

Russia

The material is interesting, even though it was a bit unusual to learn on
examples with pseudocode. For pros, this approach is, of course, quite
acceptable. In general, the book is definitely worth its price.

An ebook in human-friendly, natural language.
Written with minimal jargon and technicalese, maximal code samples and illustrations.

Not bound to a specific programming language.
Code examples are in pseudocode, applicable to most modern OOP languages.

Readable on any device.
The eBook is available in three formats:

EPUB for reading on phones and tablets

MOBI for Amazon Kindle readers

PDF for reading anywhere or printing

Always handy and searchable.
The ebook is a convenient reference guide. Unlike a paperback, it is searchable and impossible to leave behind somewhere. It’s always available on your smartphone, tablet, laptop or desktop.

Pleasant reading when commuting or relaxing.
Where else can you learn in peace these days, if not during flights and on the bus or subway? Well, maybe in bed…

Easy reading day or night.
Good news for night owls! The eBook looks great on a light background for day-reading or a dark one for night-reading.

Frequently asked questions

What payment methods do you accept?

You can pay with credit/debit cards or PayPal.

How do you keep my data safe?

Your payment information is encrypted and sent directly to the payment gateway. It is never transmitted to or stored on our server.

Can I get my money back if I’m dissatisfied?

Yes! If our book doesn’t help you, just email support@refactoring.guru with your receipt. We will refund your purchase in full, no questions asked.