Single Respon­sib­ility Principle
A class changes for only one reason
Op­en/­Closed Principle
A class should be open for extension, closed for editing
Li­skov's Substi­tution Principle
Derived types should cleanly and easily replace base types
In­terface Segreg­ation Principle
Favor multiple single­-pu­rpose interfaces over composite
De­pen­dency Inversion Principle
Concrete classes depend on abstra­ctions, not vice-versa

Other Principles

Don't Repeat Yourself (DRY)
Duplic­ation should be abstracted
Law of Demeter
Only talk to related classes
Hollywood Principle
"­Don't call us, we'll call you"
You Ain't Gonna Need It
Only code what you need now
Keep It Simple, Stupid
Favor clarity over cleverness
Convention Over Config­uration
Defaults cover 90% of uses
What happens in Vegas...
Design By Contract
And then write tests
Avoid Fragile Base Class
Treat Base like a public API
Common Closure Principle
Classes that change together, stay together

Common Refactorings

Encaps­ulate Field
Generalize Type
Type-C­hecking ⇒ State/­Str­ategy
Condit­ional ⇒ Polymo­rphism
Extract Method
Extract Class
Move/R­ename Method or Field
Move to Superc­las­s/S­ubclass



Class Associations: Association

Two objects have some sort of relati­onship to each other.
Exam­ple: Car uses Highway

Class Associations: Aggregation

An associ­ation where one object has-a (owns a) different object.
Exam­ple: Car has a Driver

Class Associations: Composition

An aggreg­ation with dependency - objects are mutually destro­yed­/cr­eated.
Exam­ple: Car has an Engine

Class Associations: Generalization

"­Is-­A" relati­onship (inher­ita­nce).
Exam­ple: Porsche is a Car

Class Associations: Realization

One class implements behavior that is abstractly defined in another class.
Exam­ple: An Animal may Move(), but a Duck would move by waddling

Class Associations: Dependency

One class weakly depends on another.
Exam­ple: Car uses Highway


Access Modifiers

Private Only inside the same class instance
Protected Inside same or derived class instances
Public All other classes linkin­g/r­efe­rencing the class
Internal Only other classes in the same assembly
Protected Internal All classes in same assembly, or derived classes in other assembly
Static Accessible on the class itself (can combine with other accessors)

Design Patterns (GoF)

Abstract Factory Creational
Builder Creational
Factory Method Creational
Prototype Creational
Singleton Creational
Adapter Structural
Bridge Structural
Composite Structural
Decorator Structural
Facade Structural
Flyweight Structural
Proxy Structural
Chain of Respon­sib­ility Behavioral
Command Behavioral
Interp­reter Behavioral
Iterator Behavioral
Mediator Behavioral
Memento Behavioral
Observer Behavioral
State Behavioral
Strategy Behavioral
Template Method Behavioral
Visitor Behavioral

Share This Cheat Sheet!

Favourited by 23 Members:

srinivasraos zenweasel Marty aksenovaa davidnussio sebbu maintainweb fire9 gorillawit dttk mporras hoornet weevie webdevo MrOggy85 Epoc Dranzz Coldblackice Theosis internaciulo oronm vbgenie liyunzhen


Marc Marc, 11:29 6 Jun 12

thank you so much - this is perfect!

Add a Comment

Your Comment

Please enter your name.

    Please enter your email address

      Please enter your Comment.