LINUX.ORG.RU

История изменений

Исправление foror, (текущая версия) :

А принтеру надо знать, как печатать все виды документов?

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

Потом у тебя могут возникнуть разные типы принтеров (которым нужен не gcode, а другой код) и т.д. Количество абстракций начнут расти. Но изначально не стоит плодить абстракции, а делать все как можно минималистичнее.

А когда идёт рост абстракций, применяешь рефакторинг. А чтобы применять рефакторинг без боли, нужен ЯП со строгой типизацией. Поэтому кроме джавы я не знаю ЯП, на которых можно без боли пилить развивающийся ООП продукт.

Исходная версия foror, :

А принтеру надо знать, как печатать все виды документов?

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

Потом у тебя могут возникнуть разные типы принтеров (которым нужен не gcode, а другой код) и т.д. Количество абстракций начнут расти. Но изначально не стоит плодить абстракции, а делать все как можно минималистичнее.

А когда идёт рост абстракций, применяешь рефакторинг. А чтобы применять рефакторинг без боли, нужен ЯП со строгой типизацией. Поэтому кроме джавы я не знаю ЯП, на которых можно без боли пилить ООП продукт.