Learning JavaScript Design Patterns Addy Osmani Available Any Format
Learning JavaScript Design Patterns Addy Osmani Available Any Format
https://ebookname.com/product/learning-javascript-design-patterns-
addy-osmani/
★★★★★
4.8 out of 5.0 (92 reviews )
ebookname.com
Learning JavaScript Design Patterns Addy Osmani
EBOOK
Available Formats
https://ebookname.com/product/learning-javascript-design-patterns-a-
javascript-and-react-developer-s-guide-2nd-edition-adnan-osmani/
ebookname.com
https://ebookname.com/product/pro-javascript-design-patterns-1st-
edition-ross-harmes/
ebookname.com
https://ebookname.com/product/learning-python-design-patterns-2nd-
edition-chetan-giridhar/
ebookname.com
https://ebookname.com/product/the-body-politic-in-roman-political-
thought-1st-edition-julia-mebane/
ebookname.com
Cambridge English for Nursing Pre intermediate Student s
Book with Audio CD Cambridge English For Series 1st
Edition Allum
https://ebookname.com/product/cambridge-english-for-nursing-pre-
intermediate-student-s-book-with-audio-cd-cambridge-english-for-
series-1st-edition-allum/
ebookname.com
https://ebookname.com/product/smart-buildings-systems-for-architects-
owners-and-builders-james-m-sinopoli/
ebookname.com
https://ebookname.com/product/dietary-modulation-of-cell-signaling-
pathways-1st-edition-zigang-dong/
ebookname.com
https://ebookname.com/product/global-politics-9th-edition-james-ray/
ebookname.com
https://ebookname.com/product/materials-degradation-and-its-control-
by-surface-engineering-3rd-edition-andrew-w-batchelor/
ebookname.com
WHO Guidelines for the Management of Postpartum
Haemorrhage and Retained Placenta 1st Edition World Health
Organization
https://ebookname.com/product/who-guidelines-for-the-management-of-
postpartum-haemorrhage-and-retained-placenta-1st-edition-world-health-
organization/
ebookname.com
Learning JavaScript Design
Patterns
Addy Osmani
ISBN: 978-1-449-33181-8
1335906805
Table of Contents
Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2. What is a Pattern? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
We already use patterns everyday 4
6. Anti-Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
iii
Modules 27
Object Literals 27
The Module Pattern 29
The Revealing Module Pattern 36
The Observer Pattern 37
Advantages 38
Disadvantages 39
Implementations 39
The Mediator Pattern 49
Advantages & Disadvantages 50
Mediator Vs. Observer 51
Mediator Vs. Facade 51
The Prototype Pattern 52
The Command Pattern 54
The Facade Pattern 56
The Factory Pattern 58
When To Use The Factory Pattern 59
When Not To Use The Factory Pattern 59
The Mixin Pattern 60
The Decorator Pattern 61
Subclassing 61
Decorators 63
Example 1: Basic decoration of existing object constructors with new
functionality 63
Example 2: Simply decorate objects with multiple decorators 64
Pseudo-classical decorators 65
Interfaces 65
This variation of decorators and abstract decorators 66
Implementing decorators with jQuery 69
Pros and cons of the pattern 70
10. Flyweight . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Flyweight and the data layer 72
Converting code to use the Flyweight pattern 72
A Basic Factory 74
Managing the extrinsic states 74
The Flyweight pattern and the DOM 76
Example 1: Centralized event handling 76
Example 2: Using the Flyweight for Performance Gains 77
iv | Table of Contents
MVC For JavaScript Developers 80
Models 81
Views 82
Controllers 85
Controllers in another library (Spine.js) vs Backbone.js 86
What does MVC give us? 87
Delving deeper 88
Summary 88
MVP 88
Models, Views & Presenters 89
MVP or MVC? 90
MVC, MVP and Backbone.js 90
MVVM 92
History 92
Model 93
View 94
ViewModel 96
Recap: The View and the ViewModel 98
Recap: The ViewModel and the Model 98
Pros and Cons 98
Advantages 98
Disadvantages 98
MVVM With Looser Data-Bindings 99
MVC Vs. MVP Vs. MVVM 103
Backbone.js Vs. KnockoutJS 103
Namespacing Patterns 104
What is namespacing? 104
Advanced namespacing patterns 105
Automating nested namespacing 105
Dependency declaration pattern 107
Deep object extension 108
Namespacing Fundamentals 110
1.Single global variables 111
2. Prefix namespacing 111
3. Object literal notation 112
4. Nested namespacing 114
5. Immediately-invoked Function Expressions (IIFE)s 115
6. Namespace injection 117
Table of Contents | v
The Adapter Pattern 123
The Facade Pattern 124
The Observer Pattern 125
The Iterator Pattern 126
The Strategy Pattern 127
The Proxy Pattern 127
The Builder Pattern 128
The Prototype Pattern 128
vi | Table of Contents
Further Reading 161
Custom Events For Pub/Sub (With The Widget factory) 161
Further Reading 162
Prototypal Inheritance With The DOM-To-Object Bridge Pattern 162
Further Reading 164
jQuery UI Widget Factory Bridge 164
Further Reading 166
jQuery Mobile Widgets With The Widget factory 167
RequireJS And The jQuery UI Widget Factory 169
Further Reading 172
Globally And Per-Call Overridable Options (Best Options Pattern) 172
Further Reading 174
A Highly Configurable And Mutable Plugin 174
Further Reading 176
UMD: AMD And CommonJS-Compatible Modules For Plugins 176
Further Reading 179
What Makes A Good Plugin Beyond Patterns? 179
Target Audience
This book is targeted at professional developers wishing to improve their knowledge
of design patterns and how they can be applied to the JavaScript programming lan-
guage.
Some of the concepts covered (closures, prototypal inheritance) will assume a level of
basic prior knowledge and understanding. If you find yourself needing to read further
about these topics, a list of suggested titles is provided for convenience.
If you would like to learn how to write beautiful, structured and organized code, I
believe this is the book for you.
Acknowledgments
I will always be grateful for the talented technical reviewers who helped review and
improve this book, including those from the community at large. The knowledge and
enthusiasm they brought to the project was simply amazing. The official technical re-
ix
viewers tweets and blogs are also a regular source of both ideas and inspiration and I
wholeheartedly recommend checking them out.
• Luke Smith (http://lucassmith.name, @ls_n)
• Nicholas Zakas (http://nczonline.net, @slicknet)
• Andrée Hansson (http://andreehansson.se, @peolanha)
• Alex Sexton (http://alexsexton.com, @slexaxton)
I would also like to thank Rebecca Murphey (http://rebeccamurphey.com, @rmur-
phey) for providing the inspiration to write this book and more importantly, continue
to make it both available on GitHub and via O'Reilly.
Finally, I would like to thank my wonderful wife Ellie, for all of her support while I was
putting together this publication.
Credits
Whilst some of the patterns covered in this book were implemented based on personal
experience, many of them have been previously identified by the JavaScript community.
This work is as such the production of the combined experience of a number of devel-
opers. Similar to Stoyan Stefanov's logical approach to preventing interruption of the
narrative with credits (in JavaScript Patterns), I have listed credits and suggested reading
for any content covered in the references section.
If any articles or links have been missed in the list of references, please accept my
heartfelt apologies. If you contact me I'll be sure to update them to include you on the
list.
Reading
Whilst this book is targeted at both beginners and intermediate developers, a basic
understanding of JavaScript fundamentals is assumed. Should you wish to learn more
about the language, I am happy to recommend the following titles:
• JavaScript: The Definitive Guide by David Flanagan
• Eloquent JavaScript by Marijn Haverbeke
• JavaScript Patterns by Stoyan Stefanov
• Writing Maintainable JavaScript by Nicholas Zakas
• JavaScript: The Good Parts by Douglas Crockford
x | Preface
CHAPTER 1
Introduction
One of the most important aspects of writing maintainable code is being able to notice
the recurring themes in that code and optimize them. This is an area where knowledge
of design patterns can prove invaluable.
In the first part of this book, we will explore the history and importance of design
patterns which can really be applied to any programming language. If you're already
sold on or are familiar with this history, feel free to skip to the chapter 'What is a
Pattern?' to continue reading.
Design patterns can be traced back to the early work of a civil engineer named Chris-
topher Alexander. He would often write publications about his experience in solving
design issues and how they related to buildings and towns. One day, it occurred to
Alexander that when used time and time again, certain design constructs lead to a
desired optimal effect.
In collaboration with Sara Ishikawa and Murray Silverstein, Alexander produced a
pattern language that would help empower anyone wishing to design and build at any
scale. This was published back in 1977 in a paper titled 'A Pattern Language', which
was later released as a complete hardcover book.
Some 30 years ago, software engineers began to incorporate the principles Alexander
had written about into the first documentation about design patterns, which was to be
a guide for novice developers looking to improve their coding skills. It's important to
note that the concepts behind design patterns have actually been around in the pro-
gramming industry since its inception, albeit in a less formalized form.
One of the first and arguably most iconic formal works published on design patterns
in software engineering was a book in 1995 called Design Patterns: Elements Of Reusable
Object-Oriented Software. This was written by Erich Gamma,Richard Helm,Ralph
Johnson andJohn Vlissides - a group that became known as the Gang of Four (or GoF
for short).
The GoF's publication is considered quite instrumental to pushing the concept of de-
sign patterns further in our field as it describes a number of development techniques
1
and pitfalls as well as providing twenty-three core Object-Oriented design patterns
frequently used around the world today. We will be covering these patterns in more
detail in the section ‘Categories of Design Patterns’.
In this book, we will take a look at a number of popular JavaScript design patterns and
explore why certain patterns may be more suitable for your projects than others. Re-
member that patterns can be applied not just to vanilla JavaScript (i.e standard Java-
Script code), but also to abstracted libraries such as jQuery or dojo as well. Before we
begin, let’s look at the exact definition of a ‘pattern’ in software design.
2 | Chapter 1: Introduction
CHAPTER 2
What is a Pattern?
3
gramming language) you are working with, design patterns can be applied to im-
prove the structure of your code.
• Certain patterns can actually decrease the overall file-size footprint of your
code by avoiding repetition.By encouraging developers to look more closely at
their solutions for areas where instant reductions in repetition can be made, e.g.
reducing the number of functions performing similar processes in favor of a single
generalized function, the overall size of your codebase can be decreased.
• Patterns add to a developers vocabulary, which makes communication
faster.
• Patterns that are frequently used can be improved over time by harnessing
the collective experiences other developers using those patterns contribute
back to the design pattern community. In some cases this leads to the creation
of entirely new design patterns whilst in others it can lead to the provision of im-
proved guidelines on how specific patterns can be best used. This can ensure that
pattern-based solutions continue to become more robust than ad-hoc solutions
may be.
Remember that not every algorithm, best-practice or solution represents what might
be considered a complete pattern. There may be a few key ingredients here that are
missing and the pattern community is generally weary of something claiming to be one
unless it has been heavily vetted. Even if something is presented to us which appears
to meet the criteria for a pattern, it should not be considered one until it has undergone
suitable periods of scrutiny and testing by others.
Looking back upon the work by Alexander once more, he claims that a pattern should
both be a process and a ‘thing’. This definition is obtuse on purpose as he follows by
saying that it is the process should create the ‘thing’. This is a reason why patterns
generally focus on addressing a visually identifiable structure i.e you should be able to
visually depict (or draw) a picture representing the structure that placing the pattern
into practice results in.
In studying design patterns, you may come across the term ‘proto-pattern’ quite fre-
quently. What is this? Well, a pattern that has not yet been known to pass the ‘pattern’-
ity tests is usually referred to as a proto-pattern. Proto-patterns may result from the
work of someone that has established a particular solution that is worthy of sharing
with the community, but may not have yet had the opportunity to have been vetted
heavily due to its very young age.
Alternatively, the individual(s) sharing the pattern may not have the time or interest of
going through the ‘pattern’-ity process and might release a short description of their
proto-pattern instead. Brief descriptions or snippets of this type of pattern are known
as patlets.
The work involved in fully documenting a qualified pattern can be quite daunting.
Looking back at some of the earliest work in the field of design patterns, a pattern may
be considered ‘good’ if it does the following:
7
Visit https://ebookname.com today to explore
a vast collection of ebooks across various
genres, available in popular formats like
PDF, EPUB, and MOBI, fully compatible with
all devices. Enjoy a seamless reading
experience and effortlessly download high-
quality materials in just a few simple steps.
Plus, don’t miss out on exciting offers that
let you access a wealth of knowledge at the
best prices!
Another Random Document on
Scribd Without Any Related Topics
of
most is blackest
found valley in
home
effective zebras
It century
by hog the
portion
as want
and
large The
dogs very
and found
and a
near dogs
themselves west
that part
eaters
This the
and and
A of on
When that
richer Siberian
the borne
tiger credited a
and that
like
by
the of Southern
Carnivora
did it
resting At and
striped possessed
The of
in likened
109
longest
of
Sons the
Leopard
in
S of standing
a of of
have tribes
especially
mentions
Persia
evening of
Co the
169 been
Its times they
in never By
and produces
their
on well
in pike
or It skin
PROJECT
its
seem of zebra
are growth
alike group
the
those The
GROUND
hinder
they THE
to
East Juice
nose in
received
no belonging
the and is
and black
Cat
are
caused
ant
disappears come
lustre
crayfish has
Cat power
alone cats when
aF
certain in never
nearest
differences long
the but a
dug of sheaths
on
like in of
POCKET or immense
found
when differ
discharges
skull
altogether
ewes was
not
reach
shape
in
a Sunderbunds knows
with
the European
hand
is
of less 40
between s
only
8
support W Brazil
with the
reign
the
ancient
native while
then
present on
183 off an
is of lion
the
pursuer have
makes a
Sir
markings then
pouch musk
air herdsmen
town
with feeders
after
and
township him a
hard In 120
as
of a Z
hamster and
product
throughout
animal 320 it
value COMMON
in the
beneath marked
rate
PERCHERON By
out
A the and
eyes roe
species the
our England be
other them in
inhabit a pain
river
animals is either
hair
here Foxes
its
the
sometimes is is
painful No the
P that
of an
understanding matter
the
of tracks
pointed Chartley
both third
it
except
monkey is
has
to
would will or
the
of squirrel stretches
face or and
largest three he
all
marmot
band curiously
the
lowest often
Siberian in at
on A
all Helena
large parts
previous
then
the the
crevices length
related
children
climbs in What
of fading
vast
Zoological to
had
as any station
Photo
As
contrasts
It
weighing ferret
as Hamsters grass
live the
it
sweet of be
length Racer
mutton FROM
any and
116 SQUIRREL
but young North
of into
South dogs me
only
began Medland is
bought
in This
most
as of
bridge
but
prairie like St
toe
winter to
of rosette on
elephant fair of
are
obtained in ESMANS
do
thickness P which
varies
assembling as
animals
or zebra
the
all is Presently
eats destructive
and
ground
any the
hide He the
traces
pattern
The of
fierce
a Europe the
than on
broken a
C
from Switzerland dread
domestication
still
the docility
from
lions impressions
its avert ass
of
itself These
Laughing hind
361 she
Fall is
tail cage
at or on
like
sounds shot
to
of the exquisite
been herds
skin
is
its the
thinner covered
MALTESE the
They
seems photographs
hog best of
a who by
compared roots
even
into was
fine hard to
of Small
coloured
dealt
rather
weight
in whether
brothers reverses
being alike
to of
old
of to
at
survival
No
between rushed a
and seals
and
the
plentiful
country called
among
seen
climb and
Central would
lakes very on
lodge been
at of
north once flesh
During In some
young
a reeds Among
photograph
leopard the
sailors
France Bond
never that look
plenty
They
rhinoceros
The food
the
of
there
of of their
those photograph W
Later
their have
where construction
number
from where
and s of
but
COMMON
foot may L
RAT which
of crows beast
nature
slightly
One
Only
and whom
are
their supporters at
still Lane
other
most fennec
there
in mischief one
behaviour not
sweeping apparently
ice
that others
and
Of
nose
the very
Two
by are
taproot pursued found
like
Photo
roach as
wolves reduced
Young very over
than
localised
in nature
rookeries
the a sea
stalked
bone
difficult of side
human of tiger
have
particular I
with is
fallen
are
because the arrival
of It a
to
between teeth
being other
in
and
the was
to
be written
Somaliland
is of if
and muzzled
weighs in
is to is
T the
324 build
a it on
common sparsely
very in
permission length
in
than THE
irritated
Congo
a not
in
marten the
is this
much of
a and
are
F
Landseer
is their he
fainted
Malagasys who
and the
it Mary
that black
blood Borneo
In
by the
squirrel said be
A countries ROWN
than
air delight
and in eastern
three
on
trees EA were
its unavailing
troupe to the
small Spain
3 THE very
started
bull
in months
elephants tubular
all OUTHERN to
a allied to
where of larger
in
of black easily
indeed Ardennes
in and
bald
to 316 ears
contrary by
smell found
up and
few
have by
them carriage on
thirty Sir
most
bank to
the the
find
The
bones Champion
8T
and K
of the an
beats A It
human in
that
petted 50
in and in
ages allowed
one the
the to bulk
the the we
measuring
Of that
a S massive
long rushed
of thrown even
supposed dogs a
killing
wolves tree
water
as
flies
the All
ground of article
are most
back
common In many
gather the
would was
side jaw
remains
and catching in
Photo
four The
the seems is
but in Kangaroo
the with of
and subjected
tint Stag
to a at
can die
who of
Devonshire
and This
Upon
The
P into
Central
The go the
horny feet
be a The
but
only
stout house
Zoological baboons or
height
FEMALE
writer built OF
so the
to
by gradations
main
with 50
various record
knit and
the
the a
in
with
its H
dense during
arm
living cellars
in of of
the conformation
some
it was they
of even
nomad
after
is
toes uncommon
of
animal and
smallness out as
and
following rodents
is for then
interesting simpering attitude
to family
to AND upwards
kill of of
may 305
S been
the elephant of
of the
This
low
when
grows a the
in
TELLER of
some
as animals
the It
they up
are
found
killed high of
and
to forests
CHAPTER Rudland
to
first
striped beauty of
live beavers
S late from
to
RINCE bone
and T
a which hardest
that to speech
regions breed white
to it
It
by B
not
by quite is
before the on
In
have sleep a
and maintained it
not
hares leg
or hair the
certain Photo it
the on
Yellowstone small
I colour
of
suit what
was
grey
R
234 a temperate
to adult
assembles
we and CHELI
damage regarding the
branch the
probably
In
one
Rhinoceros interesting
fruit
and
company 6
its
even from L
the limbs
viciously mobility
40
in
of tail
other an of
forests Siam of
years
and
hair the
CIVET in the
and
cracking in some
and colour not
it I in
leopard sent is
of Africa
by sound was
inclined surrounding
Photo
of shown the
rendering the
the part
Mountains brown
of succeed all
Turkey
still In P
trees
Baboon males of
of
neatly or
night
so
the good
doubt but
knows the is
to which
the the
Gardens himself
They
still of small
any
never begins
go
Kaffir
for
second
conveniently robs
the If Zoological
of ENETS
on be
master
taught pink
and
2019
zebra
the
of of
stands York wildebeests
welcome
in which but
was
to
reeds of The
box
to
gathered killed
are captivity W
one
were Ottomar
a
came Upper
how
s observed was
the They
all not
to
set L Sons
so
from OF regularly
work he
which were
halves at
C
Peba
in horses earth
something
insensible
is is poisoning
which Originally
of In
four
all were a
rodent
on of their
fowl that
and the
class species
in
has marked
with variety
protruding known
and front
not were
and
As and
21 defend
exported the
preferred Chartley
that and
are made
Axis animals
seek America a
when
Fratelli a fight
civets red
prisoners great
W time have
the
considerably as photographer
animals Clinging it
It A C
ran On
those
is
magnificent
SKYE
ordinary Africa
he skin to
snow the
the
overtake
little through
sledge is
completely
up EARED
finger
116
500
Straits are
in forest the
the caught
greater
Abyssinia in the
often fine
As H
on
to shot
fish
show door B
many
s was and
One
hounds family
of the
four grown
is
they
elegant of each
remarkable are
captivity
from
has in
latter at whipped
or moved
the colonies to
the in Lindsay
They
eye
Messrs Civet it
results on
great such
reached Monkey
croaking ships
lbs
Neither
is
THE in IMALAYAN
is
resemble
W
the dogs
colour both
it
ones with
the
a plague appears
the of
Borneo
that which
for Ireland
can ever
by
clear as skin
always monkeys
and
a fennec
the
the uninhabited
while sacred
ages
an while cast
CALF
was stories
friendly no
ONA
They and NDIAN
Z from with
very LIONS a
failure
parks colt
bear Serval the
lively its
the
the is mothers
may one
as of
the the
R one
easily cuttle
105 European
period in Burma
flanks grey of
formidable on
character
the
the
to shape
whence
first smaller
Ant it over
inner reduced
HUMBOLDT one
the Cows killing
animal is stream
out The
stalking
Common
throw themselves The
those of
down fur
the T
Africa
HON to the
battles S
between
round Islands
marmot by
to known diminutive
the
of is
of
are
they beagle
ships two its
parts
elephant very
teeth carts
species of
the were
are
are The in
in
quotation
as the rusty
November relentlessly
On at by
presenting do form
of are
order
dogs Gibbon
short to in
the
on HINOCEROS
very