Состав для спасения наследства

И начинаются проблемы

Понятие наследования, является концепцией, которую мы должны освоить, когда мы используем языкЕсли вы хотите организовать свой код вокруг объектов, есть большая вероятность, что вы столкнетесь при необходимости использовать наследование. Хорошо, что наследство приносит множество неоспоримых преимуществ, это не ответ на все вопросы. Если вы попадаете в использовании слепого наследования, есть большая вероятность, что вы mordiez пальцы, спустя несколько месяцев, когда вы должны будете изменить функциональный объем вашего приложения. Конечно, есть соблазн сказать: “Если я наследует Foo, то я все свои возможности без усилий.”. Но в то же время, вы свяжите очень сильно ваши два класса, и если они приходят расходиться в будущем вы не сможете, что вы просто сказать “Ок, они делят, когда же некоторые особенности ”. Вы тогда начнете понимать, что это сейчас трудно проверить каждого из этих классов, и что он далеко не очевидно, разделить их. Забота для разработчиков не имеющих опыта работы в том, что никто не понимает этого факта, что в середине проекта, или когда клиент хочет внести изменения в функционирование существующего элемента. Вы можете верить мне на слово, это в конечном итоге случается. Надо знать, обнаруживать различные типы отношений, которые могут существовать между классами.

Класс может быть связан с другим в трех типах отношений: композиция всегда будет более гибким, что mixin и не будет напрямую связано с классом, в котором он расположен, в отличие от наследования.

Итак, теперь транспортные средства, которые имеют скорость, автомобили могут ездить и вертолеты могут летать. А теперь допустим, что мы хотим создать класс для самолетов, которые технически могут ездить и летать.

Сиси, это возможно

Как сделать. Наш самолет находится на полпути между автомобилем и вертолетом. Конечно, можно было бы использовать mixins, но это не является ни больше, ни меньше, что формы множественного наследования. Это было бы гораздо лучше, чем наше текущее решение и позволит решить нашу проблему. Другим решением было бы использовать состав, который позволяет изолировать поведения в специализированные классы.

Можно будет потом использовать экземпляры этих классов в других классах.

Это позволяет иметь классы, характерные, емкие, без методов нет, а очень легко проверяемые. Использовать состав, это иметь доступ на всю мощь класса, предназначенные для манипуляций с объектом. Делаем так: Я признаю, что это решение является более громоздкой, чем mixins, но она так же является гораздо более гибким и мощным, и будет на практике, конечно, проще проверить. Для демонстрации я инициализации объектов Wheels и Крылья на лету, но на практике мы бы скорее сделать эту работу инициализации в метод initialize, который позволит иметь постоянные объекты и избежать проблем конкуренции. На практике, нет оснований следовать точный метод, почему использовать состав, mixins или наследства исключительно, когда вы можете микшировать три. Надо уметь приспосабливаться и использовать решение, которое будет более гибким. Можно будет использовать наследование, когда это необходимо, помните, “разработчик-это человек”.

Можно перейти к mixins, когда мы находимся в ситуации “разработчик, выступает в качестве наемного работника”.

Можно обратится вероятно к сочинению, если эта связь оказывается что-то сложное, объекта, требующего класс, посвященный. Суммировать содержание этой статьи, думаю, ваши классы, чтобы они были как можно более модульным возможно, не забивайте себе голову в окне, когда вы не сможете вывести впоследствии следует разграничить обязанности каждого из них. Если ваши тесты становятся трудно установить, это часто-признак проблемы архитектуры, которые вы должны положить чип в ухо. Сегодня речь пойдет о архитектуре программного обеспечения. js. Не оставайтесь наедине.