Я получил этот вопрос во время интервью и не знал, как на него ответить правильно. Вопрос в том, что у нас есть система мебели, с которой мы можем управлять разной мебелью. Каждая мебель имеет свои material
(например: дерево, железо) и name
, type
(например: стул, стол, стол).
Для каждой мебели мы можем позвонить isFireApproved()
и getWeight()
. Сначала я рисую базовый класс сверху, называемый Furniture
и Material
. Под Мебель я поместил различные типы мебели, такие как стол, стул и сделал то же самое с классом материала. Как и на следующей диаграмме.
Затем я сказал, что если мы хотим произвести предмет новой мебели, такой как woodchair
, мы можем создать новый класс с именем woodchair
, который наследует класс wood
и chair
. класс.

Тогда интервьюер спросил, что, если у нас есть тысячи различной мебели? Что может случиться в этой архитектуре и как ее решить? Я в основном застрял здесь и ответил, что мы можем сделать общий урок, передать тип мебели и материал в экземпляр.
Например:
wood_iron_wardrobe = CommonFurniture(type=[Wardrobe], materials=[Wood, Iron])
В конструкторе мы используем эти параметры для создания нового предмета мебели. Исходя из лица собеседования, я подумал, что не отвечу в правильном направлении. Есть ли какие-либо предложения для этого дизайна? Или есть рекомендации по изучению OOD?