Your real question is how to control a 12V 4A motor from a 0-5V logic output such as from a arduino.
Probably the simplest way is to use a relay. Use a relay with a 5V coil and a low side NPN to drive it:
This can support relays that take up to 100mA or so to drive, which should be more than enough for relay run from 5V that can switch what you want. The other side of the relay is just like a ordinary switch. You put it in series with the 12V supply and the motor.
There are fancier ways to drive the motor, but this is simple, robust, and meets all the specs you provided.
You now say you want to control a 12V 500mA solenoid in stead of a 12V 4A motor. That is just like driving a relay, except in this case the current is higher and it will be powered from the 12V supply instead of the 5V supply. For the different supply the only change is to connect the high side of the coil and diode to the new supply.
The higher current procludes the relay drive circuit shown above. If bipolar transistors are used, more current gain is required than you can reasonably expect from a single part. This can be dealt with by using two transistors. I would just use a single logic level FET:
However, there are lots of ways to implement a low side switch for 12V and 500mA that is driven from a logic output.