История изменений
Исправление foror, (текущая версия) :
А принтеру надо знать, как печатать все виды документов?
Если у тебя в программе больше одного типа документа, то для печати каждого типа документа нужно создать класс берущий на себя печать документа конкретного типа. Такие классы будут промежуточными, между принтером и документом. Например, такие промежуточные классы получают на вход документ и преобразуют его в gcode, который можно отправить на класс драйвера принтера.
Потом у тебя могут возникнуть разные типы принтеров (которым нужен не gcode, а другой код) и т.д. Количество абстракций начнут расти. Но изначально не стоит плодить абстракции, а делать все как можно минималистичнее.
А когда идёт рост абстракций, применяешь рефакторинг. А чтобы применять рефакторинг без боли, нужен ЯП со строгой типизацией. Поэтому кроме джавы я не знаю ЯП, на которых можно без боли пилить развивающийся ООП продукт.
Исходная версия foror, :
А принтеру надо знать, как печатать все виды документов?
Если у тебя в программе больше одного типа документа, то для печати каждого типа документа нужно создать класс берущий на себя печать документа конкретного типа. Такие классы будут промежуточными, между принтером и документом. Например, такие промежуточные классы получают на вход документ и преобразуют его в gcode, который можно отправить на класс драйвера принтера.
Потом у тебя могут возникнуть разные типы принтеров (которым нужен не gcode, а другой код) и т.д. Количество абстракций начнут расти. Но изначально не стоит плодить абстракции, а делать все как можно минималистичнее.
А когда идёт рост абстракций, применяешь рефакторинг. А чтобы применять рефакторинг без боли, нужен ЯП со строгой типизацией. Поэтому кроме джавы я не знаю ЯП, на которых можно без боли пилить ООП продукт.