How To
Think
Like a
Programmer
Part 4: Design Patterns
By @ErikRalston
Design Pattern
A reusable concept for structuring code
A writing "cliche" for code
Procedural Programming
Code and Data are Separate
Code is broken into functions
Code is pages (files) of paragraphs (functions)
Object-oriented Programming
Code and Data Organized Together
Code becomes characters with defined abilities (Object)
Or each Object could be thought of as its own book
Principles of oOp
Encapsulation
Bundling of data with behavior, exposing only necessary data
Abstraction
Simplify the program by hiding state
Inheritance
Reuse functionality by
oo style #1: classes
Each object is a Type of object
They belong to a "Class"
Traits are genetic
Types can have child types that "inherit" their abilities
C++, Java, C#
OO Style #2: prototypes
Each object refers to a parent "Prototype" object
Anything requested by
Traits are Contextual
JavaScript
object-oriented
design patterns
Strategy pattern
Implement a different algorithms for related problems
Each in different sub-class
Singleton Pattern
Maintain only a single instance of an object
Grants access across the program to a necessary resource
factory Pattern
Instead of objects making themselves
Have an object make one for you
command pattern
Make an object for each action with a system
Enables extension of the system without altering it
Visitor Pattern
For a collection of objects
Place logic in something that visits them
Instead of the collection itself
Singleton Pattern
Maintain only a single instance of an object
Composite Pattern
Make a sub-class that is a collection of the class
Applying actions to all children
hands-On
Designing Photoshop