The website need News, Image Gallery and Announcement. But all of the News, Image Gallery and Announcement has 2 types: public and private.
The private content is tend to be a "collaboration platform" for specific user role.
I've created two content types for News (news & private_news), and so on for Image Gallery and Announcement.
So the website has 6 content types. I'm using content_access to make the content type public or private.
The problem with this, I dont know the future of the website. It will fails if in the future it needs public and private forum (where forum cannot exist in 2 content types).
Choice 2: Make single content types. It needs single News content type. The field accessibility is done by using field_permissions (not yet tested) and the node visibility is same as above; using content_access
But the problem is the content types become more complex. It maybe become very heavy for the server.
Choice 3: Use different sobdomain:
www.site.com for public contents, and
somename.site.com for private contents (not sure what name I should choose as subdomain).
I'm not sure which one the the best if the website growing bigger (in terms of traffic and website features).