Животное
deferred class ANIMAL
inherit
ANY
redefine
default_create
end
feature
creator: like Current
guts: GUTS
default_create
do
create guts
end
make_malformed
do
default_create
end
end --class
СВИНЬЯ
class PIG
inherit
ANIMAL
redefine
make_malformed
end
create
default_create,
make_malformed,
make_from_insemination
feature
guts: GUTS
make_malformed
do
Precursor
set_left_eye (create {MALFORMED_EYE})
end
make_from_insemination (some_humain: HUMAIN)
do
default_create
creator := some_humain
end
end --class
В моем видении лучших практик я скажу, что
- Если нет особого смысла делать процедуру создания (как мой
make_malformed
пример) переопределитьdefault_create
- Вся процедура создания должна вызывать
default_create
и добавлять определенное поведение (например, мой примерmake_from_db
). - Итак, какова цель многих библиотек в Eiffel, которые добавляют
make
какcreate {LINKED_LIST}.make
Поправьте меня если я ошибаюсь. Заранее спасибо!