类设计问题:保护和暴露

来源:互联网 发布:数据港董事长周群 编辑:程序博客网 时间:2024/06/15 09:47

typedef CList<CObject> CListObj;
class CData
{
public:
 const CListObj& ListObj() const { return m_listObj; }
 CListObj& ListObj() { return m_listObj; }

protected:
 CListObj m_listObj;
 mutable CCriticalSection m_cs;
}

注意:类本来是要将m_listObj用m_cs保护起来的,但是类所提供的接口ListObj()却将m_listObj直接暴露给消费者,这是矛盾的,属于设计上的问题.