A dynamic method dispatch is similar to runtime binding and dispatch which some languages call RTTI - run-time type identification and binding. e.g. will be let's suppose you have cats, lions and leopards in a zoo. They can all stalk() and pounce() but which pounce() happens depends on which "CAT" is being considered. The dispatch is the action of the pounce...but the implementation (say height 1m, 4m or 6m) depends on the animal instance!
Let's see a practical use of the same. Let's say you are building some UI controls. Each control has a decorator based method that draws its border - drawBorder(
String identifyDecorator). Now depending on the decorator-constant passed I can use a factory to generate and draw the appropriate Decorator defined border. Here you see the DMD in action where which decorator's drawBorder version executes will depend on the idenitfyDecorator constant passed.
BTW, coming to the book, "OO Thinking" is a good book, but only if you are an advanced reader and will walk/run the extra mile of following references.