CSC 430

Useful Design Pattern Links from Fall 2012 CSC 430 students

From Jason Clark:
http://www.oodesign.com/
Here are lots of design patterns with nice examples

http://sourcemaking.com/design_patterns
This is another site with lots of design patterns with examples

http://www.javacamp.org/designPattern/
Here are lots of design patters.. I especially like the "Where to use & benefits" section

From John Burton:
http://en.wikipedia.org/wiki/Software_design_pattern
http://en.wikibooks.org/wiki/Java_Programming/Design_Patterns

From Kurt Ladendorf:
http://blogs.msdn.com/b/cashto/archive/2007/06/04/coding-against-the-grain.aspx
 -  Acts as a good summary to the clean code and design patterns book.  It puts them in a realistic perspective.

http://www.oodesign.com/design-principles.html
-  Gives explanations and examples of multiple design patterns.

From  Michael Owen:
http://sourcemaking.com/design_patterns
     Includes a lot of information about many different design patterns and also some good information about refactoring and UML diagrams.

http://refcardz.dzone.com/refcardz/design-patterns
     A useful reference for determining what many design patterns are good for and deciding what situations would be good for that pattern.

From  Demis Harper:
http://sourcemaking.com/design_patterns -- This site has several examples of design patterns we go over in the book,and a few we that aren't in the book.  For each design pattern, there are example codes in languages ranging from C# and Java to PHP.

http://www.research.ibm.com/designpatterns/example.htm  --This one I'm iffy about, but it does list some reasons problems with the observer design pattern, as well as why it is still useful. I think it gives a pretty good all around look at that one.

From Jessica Lott:
Book that teaches design patterns by looking at code:
http://www.amazon.com/Holub-Patterns-Learning-Design-Looking/dp/159059388X

Possible test question or assignment: Choose a design pattern and tell about its features and where you would use it. List of Computer Science Design Patterns:
http://en.wikibooks.org/wiki/Computer_Science_Design_Patterns


From Josh Clifford:

http://msdn.microsoft.com/en-us/library/ee817669.aspx
Exploring the Observer Design Pattern in .NET. This resource does a good job of explaining the pattern both generally, as well as through C#/VB code and .NET Framework Patterns.

http://www.youtube.com/watch?v=Ex2WpvpZfsg

http://www.youtube.com/watch?feature=endscreen&v=VuPAw5svj3Q&NR=1

http://www.youtube.com/watch?v=xDmXe4-tI_I
In addition to #1, this professor has a series of lectures on the Observer Pattern that takes a look at an application he wrote and rewrites it to fit the Observer pattern. The lecturer rewrites the application in both a direct clone of the Observer pattern, as well as using the .NET implementation of delegates and events.

http://www.codeguru.com/csharp/article.php/c19335/Guide-to-Implement-the-Factory-Pattern-in-C.htm
This link goes through the Factory Pattern in C#, using a fairly straightforward example, correct C# naming schemes, diagrams, and more to explain the pattern.

    
http://www.sourcemaking.com
Great, user-friendly site covering topics like design patterns, refactoring, and UML by using diagrams and pictures for visual learners.

http://decomp.ulb.ac.be:9090/FrepSite/Cours/0506/TechnoFutur3/dp_presentation_solutions.pdf
A good exercise that tests students' knowledge on the different design patterns.

From James Cain:

http://www.oodesign.com/
This website contains a large number of known design patterns in programming, grouped into three separate categories: creational patterns, behavior patterns, and structural patterns. Each pattern is explained in detail, as well as its applicability and examples of where it can be used. Some also include “When to Use” and “Common Usages” sections.

http://www.javacamp.org/designPattern/
This website covers many details of design patterns in detail, as well as many specific ones. Its focus is on Java programming, but can be used to learn about object-oriented programming in general.

https://www.youtube.com/watch?v=ffQZIGTTM48&list=PL8C53D99ABAD3F4C8&index=1
Mike Abyss, a Vietnamese-Canadian who is enthusiastic about programming (specifically C#) has created a series of online videos in which he describes several different design patterns, using Visual Studio and Wikipedia to walk through the details of each pattern, as well as an example program that uses it. The real-time application of each pattern will make them easier to learn -- Mike even learns a few things himself in his videos!

http://freevideolectures.com/Course/2318/Software-Engineering/15
This video lecture (part of a series presented by IITBombay, India, under the program NPTEL), covers a few details of design patterns. If you can ignore the instructor’s accent, this will be a helpful resource!

From Conal Green:

<http://www.javaworld.com/columns/jw-java-design-patterns-index.html>
Seems to be a really in-depth hands-on pattern walk through, especially this next guy:
<http://www.javaworld.com/javaworld/jw-02-2002/jw-0222-designpatterns.html>
But that column actually starts here:
<http://www.javaworld.com/javaworld/jw-10-2001/jw-1012-designpatterns.html?>

<http://userpages.umbc.edu/~tarr/dp/lectures/Factory-2pp.pdf>
This seems to follow a more "and so, class" approach, which may be useful to contrast alongside HeadFirst for some folks.

<http://www.freejavaguide.com/java-design-patterns.pdf>
22 Pages of summary, a handy tourist version before jumping in HeadFirst Design Patterns...

<http://www.javacamp.org/designPattern/>
 This is Quick & Handy, with simple hello-world-level code examples of each pattern, minus long explanation. Kind of a reference sheet, if you follow me.

<http://www.csi.ucd.ie/staff/meloc/DesignPatterns/Practicals/Abstract%20Factory.htm>
This is just a Factory & Singleton Exercise, but with no solution provided...

<http://www.decis.fr/Documentation/Thinking/TIPatterns-0.9/TIPatterns.aspx>
Another book, but with "do-this-to-the-following-code" exercises. The exercises, while without solutions, are marked and would probably make good homework.