|
|
|
Как запретить изменения в объектах в обход класса, который управляет объектами? (+)
|
|||
|---|---|---|---|
|
#18+
У меня есть класс MyObjectsFactory, который управляет (содержит списки, инстанцирует и т.д.) всеми объектами, которые нужны во время работы программы. Соответственно есть различные методы. Приведу набор аттрибутов и методов для одного из объектов: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Другие классы, в частности различные ГУИ, разумеется используют все эти объекты для презентации и работы. В данный момент вызов одного из подобных классов выглядит примерно так: Код: plaintext 1. 2. 3. Вопрос: Как я могу гарантированно обеспечить "безопасность" моих объектов, т.е. я хочу "заставить" все остальные классы обращаться за новым объектом или требовать удаление объекта только через MyObjectsFactory. Первая мысль была: не передавать вектор как параметр. Т.е. использовать например в вышеприведенном классе getGoalsMoverView непосредтвенно MyObjectsFactory и обращаться всегда к нему. Но по размышлении получается, что это тоже не решение. Ведь, ничто мне не мешает в одном из классов запрограммировать: Код: plaintext 1. 2. Таким образом будет удален объект из списка "в обход" класса MyObjectsFactory. Подскажите пожалуйста, как быть? Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 18:56 |
|
||
|
Как запретить изменения в объектах в обход класса, который управляет объектами? (+)
|
|||
|---|---|---|---|
|
#18+
NeulingВедь, ничто мне не мешает в одном из классов запрограммировать: Код: plaintext 1. 2. Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 19:11 |
|
||
|
Как запретить изменения в объектах в обход класса, который управляет объектами? (+)
|
|||
|---|---|---|---|
|
#18+
Спасибо, я такого не знал. А можно как-нибудь непосредственно вектор передать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 21:31 |
|
||
|
Как запретить изменения в объектах в обход класса, который управляет объектами? (+)
|
|||
|---|---|---|---|
|
#18+
Да, еще вопрос по этой же теме. Какие модификаторы нужно проставить на конструкторах объектов, чтобы только MyObjectsFactory мог их использовать? Чисто теоретически, вроде нужно MyObjectsFactory объявить как friend для всех классов, конструкторы которых я как приват должен декларировать. Но в яве вроде нету понятия friend? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 21:34 |
|
||
|
Как запретить изменения в объектах в обход класса, который управляет объектами? (+)
|
|||
|---|---|---|---|
|
#18+
NeulingА можно как-нибудь непосредственно вектор передать?Зачем? вектор имплементит лист, отдавайте наверх интерфейс :) NeulingКакие модификаторы нужно проставить на конструкторах объектов, чтобы только MyObjectsFactory мог их использовать? Чисто теоретически, вроде нужно MyObjectsFactory объявить как friend для всех классов, конструкторы которых я как приват должен декларировать. Но в яве вроде нету понятия friend?закройте их в пекедже с фабрикой и зделайте пекедж визибл или иннер классы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2006, 11:57 |
|
||
|
Как запретить изменения в объектах в обход класса, который управляет объектами? (+)
|
|||
|---|---|---|---|
|
#18+
NeulingДа, еще вопрос по этой же теме. Какие модификаторы нужно проставить на конструкторах объектов, чтобы только MyObjectsFactory мог их использовать? Чисто теоретически, вроде нужно MyObjectsFactory объявить как friend для всех классов, конструкторы которых я как приват должен декларировать. Но в яве вроде нету понятия friend? Нету такого понятия. Но можно декларировать конструкторы классов без указания модификатора доступа (т.н. default), тогда все члены класса, объявленные так, будут видны только внутри пакета, в котором находится класс. Соответственно, вместо объявления friend объединяешь все требуемые классы в один пакет с MyObjectFactory. Вне этого пакета конструкторы видны не будут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2006, 11:58 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=33834136&tid=2148743]: |
0ms |
get settings: |
11ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
182ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
| others: | 239ms |
| total: | 541ms |

| 0 / 0 |
