Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Design patterns help developers to improve the quality of their design, but only GOF patterns are very known, and paterns like GRASP that gives a good concepts like Information Expert,low coupling and high cohesion are less known.

I think that GRASP patterns could be a good introduction to patterns for students and developers, they will master GOF patterns better if they knew GRASP patterns.

share|improve this question
1  
To save some Googling, could you provide links and definitions of GOF and GRASP. –  ChrisF Jan 25 '11 at 18:03
8  
Because the GOF wrote a book? –  Robert Harvey Jan 25 '11 at 18:05
2  
Larman wrote also a good book talking about GRASP ("Applying UML and Patterns") but it's not very known too :) –  user14391 Jan 25 '11 at 18:20
    
GRASP does not seem to be design patterns explicitly but a set of principles about how to do OO programming. –  Loki Astari Jan 25 '11 at 18:31
1  
@user14391 Larman's book came out in 1997 making him 3 years late to the game and as you noted had a focus on UML. –  Aaron McIver Jan 25 '11 at 18:40
show 1 more comment

4 Answers 4

Based on the Design pattern (computer science) Wikipedia entry it appears the GoF book surfaced the concept to the masses.

Design patterns gained popularity in computer science after the book Design Patterns: Elements of Reusable Object-Oriented Software was published in 1994 by the so-called "Gang of Four" (Gamma et al.).

From that point forward it was defined as the base for understanding agnostic design patterns. To be honest I had never heard of GRASP until your post. It appears that the GRASP concepts are watered down abstract versions of the GoF patterns. This alone could be the reasoning that GRASP has not prevailed in popularity in that it does not provide any new information or information which would allow GRASP to stand on its own.

share|improve this answer
    
GRASP is more generic than GOF patterns that resolve a specific problems.mastering the guidelines of GRASP give us a good design skills to understand and improve better our design. –  user14391 Jan 25 '11 at 18:31
    
@user14391 Generic can sometimes become a hindrance to someone trying to learn as it becomes overly abstract and grasping the actual concepts and how you would implement them can be difficult. –  Aaron McIver Jan 25 '11 at 18:41
    
I think that if we didnt take care about generic principles like "low coupling", easily we will have a bad design, it's true that GRASP is more generic but it gives all basic principles, it's like knowing alphabet before reading articles:) –  user14391 Jan 25 '11 at 18:48
add comment

Robert Harvey's comment is probably the right answer, Design Patterns is the name of the GOF's book concerning Design Patterns.

It's sitting on my desk and is widely known as the seminal work in the field.

Like this answer, it's the first (err second) to make an impression on the minds of students.

From what I can tell, it also closely echoes Java in style and substance even though all the examples are in C++ and SmallTalk, therefore you've got a wide swath of the programming community who get it.

share|improve this answer
add comment

IMO, the two aren't really comparable. GRASP is basically a philosophy of design. Patterns are concrete examples. Some (many) patterns embody the GRASP philosophy -- but others don't.

At least IMO, a lot of the appeal of patterns can be traced back to differences in basic mentality of hackers vs. packers. Simply put, GRASP, as a philosophy of design fairly explicitly embraces the hacker (mapping) mindset. To apply it, you need to do mapping -- understand the problem, and it provides philosophical guidelines for imagining and designing a solution.

Although they weren't intended that way, patterns have been (mis?)interpreted by many as a way of making programming fit the "packer" mindset -- memorize this set of vocabulary words and be able to quote their definitions from the GoF, and you too can be a real packerprogrammer. It also fits well with much of the (packer dominated) corporate mentality -- packer PHBs and give their packer HR people a nice, neat list of "patterns" that the prospective candidate needs to "know" before they can be considered for job X (a typo in quoting the definition of "dependency injection" is a clear sign of incompetence, isn't it?)

share|improve this answer
    
Go Packers! To be perfectly honest, I am both a hacker and a Packer backer. –  Peter Turner Jan 25 '11 at 19:40
    
I totally agree, and even if GRASP is just a philosophy we can have many GOF patterns only by applying some GRASP principles, and if we talk about patterns , many hundreds of specific patterns exist(GOF,Patterns for parallel computing,Distributed applications and so one), and we can't know all of them, but if you master a good principles like GRASP,we can have a good design and i can avoid force myself to search a specific pattern from GOF. –  user14391 Jan 25 '11 at 19:42
add comment

GOF patterns are most useful with verbose languages like C++/Java. Those languages are very widely-used, so their community made the GOF patterns popular first.

share|improve this answer
    
Which is ironic, given that the biggest people in the startup of the pattern movement were Smalltalkers: Ralph Johnson (one of the GoF), Ward Cunningham, Kent Beck, ... And here Smalltalk's renowned for both its verbosity and how widely it's used. Oh, wait... –  Frank Shearar Jan 27 '11 at 18:59
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.