like many people I became a developer through an indirect route, and did not study in college CS.
What this meant was that, although i found that I had an aptitude for developing solutions for programs, I often was left bewildered by all the nomenclature in terms of objects, systems and patterns.
Which I disliked, as I believe in the long standing principle that the foundation of learning is to give each thing its proper name.
When I went researching for their meanings, I often found great disparity in terms of their descriptions. I often found at one end of the scale articles (unfortunately whose easy reading made them often widely read) that used the terms incorrectly, and at the other end of the scale papers written by academics who's intended audience were obviously people who are vastly more intelligent than I -- or also didn't understand what the heck they were saying (hence the wrong articles on the other end of the scale).
For this reason, I've assembled these FAQ's, where I've tried to pin down the meanings in the most succinct yet understandable way. I hope you find it useful. (Note that if you find any of the terms or pattern definitions incorrect or incomplete, please let me know so that I may update them).