A lot of people like the way the MLB draft works, where you can get drafted out of high school but if you choose to go to college you have to stay 3 years
IMO though the NHL easily has the best system. Players can enter the draft as soon as they turn 18, but they can still go to college after they get draft if they dont sign with an agent. The team that drafts them keeps the player's right until 30 days after they leave college, then the player becomes a free agent.
I think basketball could benefit from a system like hockey, where the players that need to develop can go ahead and get drafted early and spend time developing in college, while the Lebrons of the world can jump straight to the NBA. You could even incentivize players to go to school by letting them sign for more money when they come to the league (so you still have rookie scale contracts, but guys coming out as Juniors get more money than Freshman)