Способы создания гибкого ПО

135
29 апреля 2018, 19:21

В общем, такая проблема: У меня есть семейство классов, очень близких по смыслу.

Например, 1 класс имеет переопределенный метод базового класса, который чуть чуть отличается логикой. Другой класс так же в некоторых местах так же немного отличается. Когда мне нужно описать новую логику, которая снова чуть чуть отличается, то я снова вынужден делать новый класс, где теперь нужно проделать какую-то логику перед базовым алгоритмом.

Я чувствую, что можно пойти иным путем, что бы не плодить лишние сущности.

И вот я думаю, а можно все переделать таким образом, что бы можно на базе XML всем рулить или рано или поздно я во что-то упрусь и придется опять плодить похожие классы? Какие есть еще решения?

Answer 1

Давным-давно я слушал курс "Устойчивость систем". На одном из занятий, профессор, пожилой мужик с PhD из лондонского University College, спросил: "Как Гурвиц открыл свой критерий устойчивости?" Все задумчиво помолчали. И тогда он ответил: "Through hard thinking." (Это о способе создания гибкого ПО.)

То, что Вы описываете, это случай использования наследования ведущий к возникновению большой иерархии с короткими ответвлениями от основного узла или ствола. Такую иерархию можно значительно сжать/упростить, если вынести базовую и "чуть-чуть" отличающиеся логики в отдельный набор классов (а то и методов), которые передаются первоначальным классам (как параметры конструктора или как свойства).

При чем тут XML не совсем понятно, если только Ваши отличия в логике виртуальных методов не могут быть описаны конфигурационно.

READ ALSO
как сделать less.less в less.min.css в phpStorm?

как сделать less.less в less.min.css в phpStorm?

В phpStorme есть watcher который компилит стили less в cssА как минифицировать css, который собран из less? - т

225
Структура SPA приложения

Структура SPA приложения

совсем недавно решил познакомиться с Vuejs и соответственно с созданием одно-страничного приложения

280
Калькулятор кухонь [требует правки]

Калькулятор кухонь [требует правки]

Есть калькулятор кухонь, при выборе определенных данных расчитывается стоимость заказаОтображается только 1-ый шаг, всем остальным задан...

211