That is ( one of ) correct ways to do it. And probably most used.
Have you watched the DevCon 2015 video?.
There are also very good tips on getting it right from security point of view.
If that's your model and you want to use list view then you must substitute the finds for your own and always take the User into account.
EDIT: If you implement record access via privilege set, the finds will omit the records not belonging to the user.
Does not apply to ShowAll records. You will get ? or "No Access" in the fields.
You can do it via Custom Menus, even have separate menus for each layout, depending on the model.
Show all records could be "Extend found set" where criteria is the User.
Thanks a lot.
You have been very helpful