powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / скрыть детали реализации
1 сообщений из 1, страница 1 из 1
скрыть детали реализации
    #38431794
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надумал маленький пример:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
public class Test {

    interface Letter {

        public void Compose();
    }

    interface Postcard {

        public void Sign();
    }

    interface Stampable {

        public void putStamp();
    }

    interface Factory<T> {

        public T create();
    }

    static class LetterImpl implements Letter, Stampable {
    ...
    }

    static class PostcardImpl implements Postcard, Stampable {
    ...
    }

    static class PostcardFactory implements Factory<Postcard> {

        @Override
        public Postcard create() {
            return new PostcardImpl();
        }

    }

    static class LetterFactory implements Factory<Letter> {

        @Override
        public Letter create() {
            return new LetterImpl();
        }

    }

    static class PostOffice<T> {

        List<T> items;

        private Factory<T> factory;

        public T create() {
            return factory.create();
        }

        public PostOffice(Factory<T> factory) {
            this.factory = factory;
        }

        public void putStamp() {
            for (T item : items) {
                //item.putStamp(); //error 
            }
        }
    }

    static class PostOfficeFactory {

        public static PostOffice<Postcard> CreatePostcardDept() {
            return new PostOffice<Postcard>(new PostcardFactory());
        }

        public static PostOffice<Letter> CreateLetterDept() {
            return new PostOffice<Letter>(new LetterFactory());
        }

    }

    public static void main(String[] args) {
        PostOffice<Postcard> po = PostOfficeFactory.CreatePostcardDept();
        Postcard p = po.create();
    }

}

Я хочу, чтобы клиенту были доступны интерфейсы Letter,Postcard (не имеющие общих методов), и открытые методы класса PostOffice. И не хочу, чтобы клиент знал про интерфейс Stampable. Вопрос, как мне параметризовать PostOffice? Ведь внутри класса мне нужно знать что параметр реализует Stampable, а наружу я эту информацию отдавать не хочу.
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / скрыть детали реализации
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]