This week's book giveaway is in the OCAJP 8 forum. We're giving away four copies of OCA Java SE 8 Programmer I Study Guide and have Edward Finegan & Robert Liguori on-line! See this thread for details.
I'm not sure of your reasons for using the decorator pattern here but if Discount and or Reduction are supposed to be your decorator classes then you need to pass an instance of the object they are supposed to decorate into the constructor and then in the getPrice() method you would call getPrice() on the object which you are decorating. Currently your Discount and Reduction classes recursively call their own getPrice() method with no way of exiting the recursive calls.