It isn’t essential to have all meshes joined; meshes can be separate yet part of the same object, or even separate objects.
Use bezier curves and circles to make the parts.
Add a Bezier Circle and rename it, Bezier_Item_Shape.
Add a Bezier and rename it, Bezier_Item_Path.
Go into edit mode on, Bezier_Item_Path; press ‘V’ and you’ll see the window as shown. This allow you various controls, for example if you select vector with everything selected, then it will prefectly straighten and align the node points as shown in ‘4’.
I duplicated the, Bezier_Item_Path.
Make sure, Bezier_Item_Path is selected; under Geometry, Bevel Object select the little cube area for the drop down menu; select, Bezier_Item_Shape. This will give you a tube as ‘6’.
The items I call paths become the actual object that can be converted to a mesh object; they use the shape I created, in this instance I used the default circle.
7. Select, Bezier_Item_Path.001 and go into edit mode. By selecting the nodes, you can extrude (e), grab (g) and also manipulate the nodes to affect the curve. You could use that to create your handle-bars for instance.
8. I just made a curvy shape.
9. When comparing images, 8 and 9, you’ll notice one was much smother than the other; Shape, Resolution, Preview U determines this. It defaults to 12, but adjust this to suit your needs; after converting to a mesh, you might find there is too much geometry, chose a lower number.
I’d recommend duplicating the object before conversion as that is an easier way to revert. It prevents mistakes with Ctrl z, and also a blender crash messing stuff up too.
To convert a bezier to a mesh; object mode, select the bezier item, alt C and select what you require.
10. It’s possible to select, Bezier_Item_Shape, and manipulate it to change the shape even once it is being used by objects; not after a mesh has been created though.
Hope you find this helpful.