Прочитал тут статейку : Паттерн проектирования “Стратегия Статья хорошая, подробно все описывает вот только я не фига не понял фишки этого патерна. Т.е. мы создаем какую-то неизведанную хрень, и для этого нам надо: 1. в интерфейсе FillStrategy добавить свой метод 2. создать новый класс nnnFillStrategy, в котором переопределяем этот метод 3. подставить этот класс в конструкторе нашего класса и в чем преимущество, по сравнению с первым вариантом: 1. Создаем новый интерфейс nnnFillable 2. имплементим его в свой класс Что в первом, что во втором варианте нам надо что-то менять в своем коде. Вот только, если у нас появиться одна, потом вторая, потом третья хрень и т.д. - в первом варианте, создаем сколько надо интерфейсов и наимплиментить их можно тоже сколько угодно. А как быть с нашим патерном? У нас привязка к конкретной переменной. Тут придется переписывать уже имеющийся код? Но это не есть гут Может я не прав, первый раз с ним столкнулся, поэтому буду рад справедливой критике, особенно если это поможет мне понять как это использовать на практике