Класс с двумя интерфейсами, как лучше реализовать?
От: Андрей Е  
Дата: 24.06.11 09:48
Оценка:
Есть класс, реализующий некоторую функциональность. У него должно быть два публичных интерфейса — один для "чужих" и другой для "своих". Причем, нужно чтобы чужие не имели доступа к интерфейсу для своих. И желательно вообще, чтобы они не знали о существовании этого интерфейса. Однако нужно, чтобы чужие могли создавать экземпляры этого класса.

Чтобы стало понятней, поясню на примере:
class Window
{
public: //Интерфейс для чужих
  Window(); //Чужие могут создавать экземпляры этого класса
  void SetSize(int x, int y); //Чужие могут выполнять какие-то действия с этим классом

public: //Интерфейс для своих, должен быть недоступен для чужих
  HWND GetHwnd(); //Чужим не обязательно знать, что используется именно такой способ реализации этого объекта.
};


Как это можно сделать проще всего и как можно более естественно?

Допустимо создавать вспомогательные классы и использовать наследование.
Дружбу использовать не желательно(по крайней мере дружбу со всеми своими), так как список своих заранее не известен, и к тому же не всем своим следует иметь доступ к внутренним деталям реализации этого класса. Дружба со вспомогательным классами допустима.

Может быть есть какая-нибудь готовая идиома или паттерн проектирования реализующие такую схему?
c++ интерфейсы
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.