Hmm perhaps you don't understand:
A patch is a file describing a set of of changes between one set of (text) files and another. All it is, is a list of edits with line numbers, and context information.
"diff" is the program which makes patches
"patch" is the program which applies patches (it can also undo them)
The clever bit is, that you would normally add context to a patch, so that if the files had been changed in some small (and compatible) way, the patch COULD STILL be applied.
So in theory, if they don't conflict, you can stack several patches and have it still work. of course the more you apply, the less likely it becomes. And just because the patch applies successfully does not mean the app is going to work.
Things like Linux have always had patches - people create a patch file of their changes based on a given base version - although it typically works with other versions as long as they're sufficiently similar. This is in fact, one of the primary means of people submitting functionality to Linux.
We'd still be on Linux 0.99 if every time someone sent a patch to linus it said
FIND THIS LINE in something.c;
blah = 1;
THEN CHANGE IT TO this
blah = 2;
etc
Mark