My take on this was along similar lines. To me, the presence of a "design pattern" means the language you're using isn't powerful enough to just encode the pattern in a reusable way; i.e., a design pattern is what you get when your language won't let you just write a library function.
It's a bit interesting that Norvig talks (some) about design patterns in Lisp, since the whole point of Lisp, and particularly Lisp macros, is to be able to rewrite the language itself, so if you find yourself wanting to use a design pattern, you just write the macro that implements it for you.
The short answer is - no Java - no problem.)
The longer answer is:
Any sufficiently complicated C or Fortran program contains an ad-hoc, informally-specified, bug-ridden, slow implementation of half of CommonLisp.
http://c2.com/cgi/wiki?GreenspunsTenthRuleOfProgramming