Ответы пользователя по тегу Паттерны проектирования
  • В чем принципиальное отличие фабричного метода, строителя и фасада?

    @402d
    начинал с бейсика на УКНЦ в 1988
    Смотри.
    - Параметров у класса очень много. Вместо конструктора с 5 и более аргументами пишем ПОСТРОИТЕЛЬ

    - есть набор типовых методов которые точно должны быть в классе, но реализация их сильно отличается.
    Например (подключить - записать - прочитать - отключить). Все это может быть через BT,USB,COM,NET
    в коде я хочу просто получить текущий транспорт.
    и тут на помошь приходит ФАБРИКА. Я прошу вернуть объект через который смогу общаться, а что там будет мне не важно.

    - ФАСАД
    есть написанный кем - то драйвер для второго примера, но методы у него называются по другому или там немного не так как мне нужно. Вот оберка над тем классом в то что я хочу и есть фасад
    Ответ написан
    Комментировать
  • Как избежать преждевременной оптимизации? Или как не зная что будет потом в проекте, обрабатывать исключения?

    @402d
    начинал с бейсика на УКНЦ в 1988
    если мне кажется, что информация при отладке об игнорирование пригодиться
    я пишу в кетче вывод в консоль отладки.
    Если на 100 процентов уверен, что она не поможет потом при анализе, то
    try{
    // действия
    return честный результат
    }catch(Exception ignored){}
    return значение по умолчанию
    Ответ написан
    Комментировать
  • Какой есть жизненный пример из проектов паттерна Observer?

    @402d
    начинал с бейсика на УКНЦ в 1988
    Упрощенно через этот класс сделана автоматическая печать новых файлов в директории
    public class MyFileObserver extends Service {
    
        void doprint(Uri uri){
           // полезное действие
        }
    
        public void handleStart(Intent intent) {
    ...
                        Observer o = new Observer();
                        o.startWatching();
    ...
        }
    
    
        private class Observer extends FileObserver {
    
            public void onEvent(int event, String file) {
                if (file != null && (!file.equals(".probe"))) {
                        if ((event == FileObserver.CLOSE_WRITE) || (event == FileObserver.MOVED_TO )) {
                                        fo.doprint(uri);
                        }
                }
            }
    
        }
    
    }
    Ответ написан
    Комментировать