Hi @Rahaman,
ERC223 (lightweight standard to use ERC20 in a single transaction) was never finalized. There is no longer an OpenZeppelin Contracts implementation.
You may want to look at using ERC777 (see: Simple ERC777 token example).
There is a developing standard for an ERC20 permit() function.
(see discussion on adding ERC20 permit() function