Hide menu

TDDB84 Design Patterns


The course literature consists of online resources and scientific papers, as well as a reference textbook on Design Patterns:

Design Patterns: Elements of Reusable Object-Oriented Software
by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides

Hardcover: 395 pages
Publisher: Addison-Wesley Professional; 1st edition (January 15, 1995)
Language: English
ISBN: 0201633612

Below is a list literature you can read in order to prepare for the seminars. During the course you might also need to search for additional information on your own. For this you could use the online search engines of LiU , Google Scholar or other search tools for scientific papers that you are familiar with.

Exam seminars have a number of required reading material that you need to read in order to prepare for the seminar. In the list below this material is marked in red text. For lab seminars the only requirement is that you have done the labs.

Understanding design patterns

No required reading material

Mainly the course book, see above.

History of design patterns:

Analyzing software

To prepare for the seminar you need to do the labs

See Understanding design patterns

Design patterns and software qualities

SOLID is an acronym for a set of design principles in object-oriented design of software. The Wikipedia description of SOLID is good, but you might also need to find examples of violations of these principles, in order to understand how they are to be applied.

Justification for design:

Design and testing

To prepare for the seminar you need to do the labs

Mainly the lectures, see Scalable learning

Design patterns, paradigms and languages

Some design patterns in different languages. For example Proxy:

Programming paradigms and design patterns:

Design patterns and application frameworks

Some design patterns are implemented using more or less standardized components or techniques. Here is a list to external resources for some of them. More references are in the lecture material and will be moved here for easier reference.

  • Abstract Factory, implemented using Dependency Injection (Inversion of Control) frameworks:
  • Observer:
    • In Java, all classes in the standard library called something with Listener are typically observers. To implement your very own, with no no connection to existing event sources, you would probably start with the class Observable
    • In C#, you typically observe events in sequences of items, and implement IObservable

Various topics

Below you will find topics which might not nessacarily concern a specific seminar.

Critique and reflections

These are some of the critiques usually found against the (over-)use of design patterns in software.

Design Patterns in specific domains

Game Design Patterns by Jussi Holopainen and Staffan Björk, Lecture notes from the Game Developers' Conference 2003.

Page responsible: Ola Leifler
Last updated: 2015-03-03