DesignPatternsBook icon indicating copy to clipboard operation
DesignPatternsBook copied to clipboard

3.1 Паттерн Адаптер (Adapter) - Языковые адаптеры

Open davidich opened this issue 10 years ago • 12 comments

TODO: нужна обратная связь от рецензентов. Насколько понятен раздел?!?!?

Раздел более чем понятен и полезен для общего развития. Но IMHO тикие примеры использования паттернов мне кажуться слегка искусственными и притянутыми за уши. Т.е. я скорее за то что бы его остатавить, потому что пример полезен, но чистота примера вызывает сомнения.

davidich avatar Jan 26 '15 15:01 davidich

Да, пример искусственный.

Проблема в том, что мне довольно сложно привести пример кастомной коллекции... Пока тогда так: раздел - оставляем. Если придет на ум более вменяемый пример - меняем пример. Иначе, останется так как есть.

SergeyTeplyakov avatar Jan 26 '15 17:01 SergeyTeplyakov

Серега, возможно, я придумал пример. Если ты говоришь, что в 6 шарпе достаточно метода расширения Add и даже IEnumerable не нужен, то такая запись будет валидной, по идее:


class Program
{       
     static void Main(string[] args)
     {
          var someString = new StringBuilder { "1", "2", "3", "4" };

          // используем someString...                                    
     }
}

public static class StringBuilderExtensions
{
     public static void Add(this StringBuilder builder, string value)
     {
          builder.Append(value);
     }
}

SergeyUsok avatar Jan 26 '15 19:01 SergeyUsok

Серег, там нужно, чтобы класс реализовывал IEnumerable. Так что со стрингбилдером пример работать не будт.

SergeyTeplyakov avatar Jan 26 '15 20:01 SergeyTeplyakov

Тогда плохо, а смотрелось прикольно вроде...

SergeyUsok avatar Jan 26 '15 20:01 SergeyUsok

Я опять про пример. Возможно, стоит как пример, вставить какой-нибудь метод Rx? Тогда можно показать, как можно работать с push-коллекциями используюя sql-like linq синтаксис, можно даже твой любимый пример с троттлингом показать

SergeyUsok avatar Feb 12 '15 13:02 SergeyUsok

Пока не понял, какое отношение имеет Rx к методу расширения Add?

SergeyTeplyakov avatar Feb 12 '15 19:02 SergeyTeplyakov

никакого, ты просто покажешь примером языкового адаптера не инициализатор коллекций, а sql-like синтаксис линка

SergeyUsok avatar Feb 12 '15 20:02 SergeyUsok

Не понял:) А в чем смысл показывать linq синтаксис, когда я хочу показать инициализатор коллекций? Ведь инициализатор коллекций для Rx-а - это же плохой пример.

Чего-то я запутался:(

SergeyTeplyakov avatar Feb 12 '15 20:02 SergeyTeplyakov

АААА! Изначально ты хотел показать пример того, что мы можем подстроить свой код под какой синтаксический сахар так, что код будет с ним работать, так? То есть, в примере ты показал, что у тебя есть коллекция с методом Insetrt вместо Add, а сам Add там как метод расширения.

Так вот я предлагаю отойти от примера с коллекциями, и показать "адаптацию к сахару" на примере линка, тем более сам пример реален и широко используем

SergeyUsok avatar Feb 12 '15 20:02 SergeyUsok

Ага, теперь и я тебя понял.

Ок, можно подумать по этому поводу. Но тут нужен тогда не Rx, а custom Rx?

В общем, я тебя понял. Подумаю в этом направлени..

SergeyTeplyakov avatar Feb 12 '15 21:02 SergeyTeplyakov

Зачем кастомный? Наоборот, приведи метод Where например, естественно не весь, а основной его функционал и пример с его использованием, заодно покажешь, что такие адаптеры не просто возможность, но они во всю используются и даже очень успешно

SergeyUsok avatar Feb 12 '15 21:02 SergeyUsok

ХЗ, это же не с нуля... Ок, я подумаю, может ты и прав.

SergeyTeplyakov avatar Feb 12 '15 21:02 SergeyTeplyakov