powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / абстрактная фабрика - концептуальный вопрос
6 сообщений из 31, страница 2 из 2
абстрактная фабрика - концептуальный вопрос
    #38554292
eJack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123eJack,
не понял, почему не одна фабрика на все события. Событие - это тоже метатип объекта.
eJackтак как для получения фабрики используется название типа события

Мы точно все говорим об одно и том же?
...
Рейтинг: 0 / 0
абстрактная фабрика - концептуальный вопрос
    #38554350
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eJack,
перепишу свой посыл:
- я не понял, почему нельзя так:
Код: java
1.
2.
3.
4.
ОднаФабрика.СоздатьОбъект('МышкаПереместить', Param)
ОднаФабрика.СоздатьОбъект('МышкаНажать', Param)
ОднаФабрика.СоздатьОбъект('НепонятноКакоеСобытие', Param)
....
...
Рейтинг: 0 / 0
абстрактная фабрика - концептуальный вопрос
    #38554368
eJack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123eJack,
перепишу свой посыл:
- я не понял, почему нельзя так:
Код: java
1.
2.
3.
4.
ОднаФабрика.СоздатьОбъект('МышкаПереместить', Param)
ОднаФабрика.СоздатьОбъект('МышкаНажать', Param)
ОднаФабрика.СоздатьОбъект('НепонятноКакоеСобытие', Param)
....



абстрактная фабрика создает семейство объектов - это суть паттерна.
У меня у интерфейса (абстрактный класс) более 10 методов get/create - которые создают разные объекты для конкретного типа события.
Вот то что я уже писал, еще раз
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
public abstract class EventFactory {
    public static EventFactory getFactory(String eventType) {
        ......
    }

    public abstract Executor getExecutor();

    public abstract Mapper getMapper();
.......
}



Далее - для каждого типа события создается наследник этого класса.

Решаемая задача - что из фабрики я получаю объекты именно для конкретного типа сообщения - это и различные DAO, мапперы, конвертеры и т.д.

Вы же предлагаете мне написать один мега класс типа:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
public abstract class EventFactory {
    public static EventFactory getFactory(String eventType) {
        ......
    }

    public abstract Executor getEventType1Executor();

    public abstract Mapper getEventType1Mapper();
.......
    public abstract Executor getEventType2Executor();

    public abstract Mapper getEventType2Mapper();
........
    public abstract Executor getEventType3Executor();

    public abstract Mapper getEventType3Mapper();

}



но, это не абстрактная фабрика !
...
Рейтинг: 0 / 0
абстрактная фабрика - концептуальный вопрос
    #38554410
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eJackабстрактная фабрика создает семейство объектов - это суть паттерна.
разумеется.
Просто, если идти не от задачи (функции main), то сложно понять что именно нужно.
Суть паттерна в группах, группах в группе и ещё раз в группах
Код: 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.
public static void main(final String[] args) {
        // .....
        final AllFactory factoryAll;
        switch (EventType) {
            case 1:
                factoryAll = new MouseFactory(Param);// создали 1 группу
                break;
            case 2:
                factoryAll = new KeyFactory(Param);
                break;
            default:
                throw new IllegalStateException();
        }
 
        final EventProcessor eventProcessor = new EventProcessor(factoryAll);// создали 2 группу
        eventProcessor.RunEvent(Paramn2);
    }


// Client
public class EventProcessor {  
    private MoveProcessor moveProcessor;
    private DownProcessor downProcessor;
 
    public EventProcessor(..... factoryAll) {
        moveProcessor = factoryAll.createMoveProcessor();
        downProcessor = factoryAll.createDownProcessor();	
    }
    public void RunEvent (Param2) {
        // ....
        moveProcessor.RunMove(Param2);
        downProcessor.RunDown(Param2);
        // ....
    }
}


т.е. идём от задачи и функции main
Так?
...
а сама абстрактная фабрика только для того, чтобы всё многообразие объектов передать через одно "игольное ушко"
EventProcessor(factoryAll)
если это не надо, то шаблон не нужен. Пример чего я и приводил выше.
IMHO
______________________________________________
"Сложнее всего в мире достигнуть простоты — это крайняя граница опыта и последнее усилие гения". © George Sand.
...
Рейтинг: 0 / 0
абстрактная фабрика - концептуальный вопрос
    #38558114
eJack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123eJackабстрактная фабрика создает семейство объектов - это суть паттерна.
разумеется.
Просто, если идти не от задачи (функции main), то сложно понять что именно нужно.
Суть паттерна в группах, группах в группе и ещё раз в группах
Код: 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.
public static void main(final String[] args) {
        // .....
        final AllFactory factoryAll;
        switch (EventType) {
            case 1:
                factoryAll = new MouseFactory(Param);// создали 1 группу
                break;
            case 2:
                factoryAll = new KeyFactory(Param);
                break;
            default:
                throw new IllegalStateException();
        }
 
        final EventProcessor eventProcessor = new EventProcessor(factoryAll);// создали 2 группу
        eventProcessor.RunEvent(Paramn2);
    }


// Client
public class EventProcessor {  
    private MoveProcessor moveProcessor;
    private DownProcessor downProcessor;
 
    public EventProcessor(..... factoryAll) {
        moveProcessor = factoryAll.createMoveProcessor();
        downProcessor = factoryAll.createDownProcessor();	
    }
    public void RunEvent (Param2) {
        // ....
        moveProcessor.RunMove(Param2);
        downProcessor.RunDown(Param2);
        // ....
    }
}


т.е. идём от задачи и функции main
Так?
...
а сама абстрактная фабрика только для того, чтобы всё многообразие объектов передать через одно "игольное ушко"
EventProcessor(factoryAll)
если это не надо, то шаблон не нужен. Пример чего я и приводил выше.
IMHO
______________________________________________
"Сложнее всего в мире достигнуть простоты — это крайняя граница опыта и последнее усилие гения". © George Sand.


Читайте внимательнее вопрос - суть =>
Код: java
1.
2.
3.
4.
//EventProcessor eventProcessor = new EventProcessor(factoryAll)

EventProcessor eventProcessor = factory.getEventProcessor(eventname);
factory.getExecuterService(eventname).add(eventProcessor);
...
Рейтинг: 0 / 0
абстрактная фабрика - концептуальный вопрос
    #38558151
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eJack,
если тебе лень писать словами, то "читай все ответы выше".
ЗЫ. процессоры не имеют отношения к фабрике и шаблону.
...
Рейтинг: 0 / 0
6 сообщений из 31, страница 2 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / абстрактная фабрика - концептуальный вопрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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