Q:

what is the use case of this function ApproveAndCallFallBack?

ApproveAndCallFallBack

What will be the usecase for this code? excuse my markdown trials.

contract ApproveAndCallFallBack {
      function receiveApproval(address from, uint256 tokens, address token, bytes data) public;
  }
   function approveAndCall(address spender, uint tokens, bytes data) public returns (bool success) {
          allowed[msg.sender][spender] = tokens;
          Approval(msg.sender, spender, tokens);
          ApproveAndCallFallBack(spender).receiveApproval(msg.sender, tokens, this, data);
          return true;
      }
  

A:

Assume you want to send tokens to a serviceContract to pay for a service. Because the contracts in general do not receive events, even if you transfer the tokens, the serviceContract will never know that you sent the tokens. 
The solution is then to approve serviceContract to take the amount required from your token balance (that and not more!) first, and then execute a function in serviceContract to move the approved tokens form your token balance to the balance of serviceContract, and provide you with the service because they are now sure that you paid.
I hope this helps. 

