Вы используете Шаблонный Шаблон Метода на языках программирования с закрытиями/делегатами/указателями функции?

Socket - это клиентский сокет для подключения к серверу. Чтобы открыть прослушивающий сокет для приема клиентов, вам нужно использовать вместо этого ServerSocket , который откроет порт, если он еще не открыт, и потерпит неудачу, если порт уже используется.

public class PortCheck {

    public static void main(String[] args) {
        try {
            ServerSocket socket = new ServerSocket(4500, 0, InetAddress.getLocalHost());
            System.out.println("port available");
        } catch (IOException e) {
            System.out.println("port not available");
        }
    }
}

7
задан TechWisdom 25 July 2015 в 04:22
поделиться

3 ответа

Когда я использовал Java, да. Но для языков с "закрытиями/делегатами/функцией", Lua в моем случае, нет который я больше не делаю, вместо этого я все больше склонялся к шаблону художественного оформления для большинства своих потребностей.

4
ответ дан 7 December 2019 в 03:22
поделиться

Да, я использую метод шаблона все время, в языке программирования D. Замыкание, делегаты и указатели функций по своей природе очень слабо сочетаются с базовым классом. Это хорошая вещь, когда вы хотите эту свободную муфту. С другой стороны, иногда поведение, которое вы настраиваете, по своей природе очень плотно связаны с базовым классом. Такое поведение было бы бесполезно только в каком-либо другом контексте. В тех случаях, когда эта связь необходима, шаблон-метод шаблона является самым простым способом выразить его.

Простой тест состоит в том, что вы всегда должны использовать стратегию / закрытия / делегаты / указатели функции, если связь между базовым классом и настраиваемое поведением является односторонним, то есть базовый класс вызывает настраиваемое поведение, и это его. Если настраиваемое поведение нуждается в ссылке на базовый класс, так что он может вызывать методы и т. Д., Затем шаблон метода шаблона часто является самым простым способом продолжения.

3
ответ дан 7 December 2019 в 03:22
поделиться

Добавлю еще один ответ, пока я пересматриваю эту тему:

Шаблонный метод лучше, чем шаблон стратегии, когда политики, которыми вы настраиваете свой базовый объект, должны знать друг о друге и могут иметь смысл только в очень ограниченном подмножестве всех возможных комбинаций. Например, допустим, в вашем базовом классе есть конкретная функция doIt(), и крючки beforeDoIt(), предназначенные для инициализации политик и afterDoIt(), предназначенные для очистки политик. Вы не захотите устанавливать эти поведения независимо друг от друга, потому что они имеют смысл только в паре.

2
ответ дан 7 December 2019 в 03:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: