OK, pytanie może nie być krystalicznie czyste. Pozwolę sobie podać kilka szczegółów:Jak udostępnić konstruktor tylko klasie fabrycznej?
Załóżmy, że mam klasę fabryczną obiektów Shoe (CShoe) o nazwie CFactory. CFactory to klasa pojedyncza, która tworzy i przechowuje wszystkie zamówione buty za pomocą prostej mapy. Dostęp do tych obiektów odbywa się za pomocą metod statycznych.
Czy istnieje sposób zmuszenia konstruktora CShoe, aby mógł on wywoływać tylko przez fabrykę? (innymi słowy, upewnij się, że tworzenie obuwia może być wykonane tylko przez buty klasy singleton, a nie przez inne klasy)
Chcesz, aby produkt był klasą zagnieżdżoną fabryki? –
możesz również uczynić CShoe klasą wewnętrzną (nie statyczną). w ten sposób uniemożliwisz innym osobom stworzenie instancji CShoe bez instancji CFactory. – Chii
Odbicie * zawsze * może odejść od modyfikatorów kontroli dostępu za pomocą metody setAccessible(), jeśli Twój przykład jest w stanie uruchomić. Można to zatrzymać, uruchamiając program za pomocą programu SecurityManager, który uniemożliwia uprawnienie "suppressAccessChecks", zobacz http://java.sun.com/docs/books/tutorial/essential/environment/security.html –