Как называется этот шаблон (помогает избежать приведения типов)? - PullRequest
8 голосов
/ 27 апреля 2009

Я пытался найти ссылку на официальное определение этого шаблона проектирования, которое, как мне кажется, я видел в Go4, но, похоже, нигде не могу его найти.

class Processor{
    ProcessParameter(AbstractParameter x){
        x.Process(this);
    }

    ProcessParameter(ParameterA x){
        ... A-specific logic...
    }

    ProcessParameter(ParameterB x){
        ... B-specific logic...
    }
}

abstract class AbstractParameter{
    abstract void Process(Processor p);
}

class ParameterA : AbstractParameter{
    override void Process(Processor p){
        p.ProcessParameter(this);
    }
}

class ParameterB : AbstractParameter{
    override void Process(Processor p){
        p.ProcessParameter(this);
    }
}

1 Ответ

13 голосов
/ 27 апреля 2009

Это Шаблон посетителя . Техника называется «двойная отправка».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...