Класс должен рассматриваться как объект или модуль, который выполняет ключевую роль или функцию в программе. Роль, которую не выполняет ни один класс или модуль. Например, вы можете иметь класс Animal
, который предоставляет функции sleep()
, run()
. Но вам может понадобиться класс для плотоядных, который также kill()
, hunt()
и т. Д. Итак, вы реализуете класс Carnivores
, расширяя его от Animal
, что делает все переменные типа Animal
, но также дополнительно убивает и охотится.
Если ваш класс имеет только один общедоступный метод, но если для дизайна важно иметь его как отдельный модуль, то для него класс хорош. Вы можете продлить его позже, если это необходимо.
Также вы можете, держать sleep()
и run()
функции статическим и общественность, все Animal
«s сделать это, и поэтому вы можете просто сделать Animal.sleep()
и такой, без создания отдельного экземпляра. Но такой функции, как roar()
, быть не должно.
Update: Поэтому я сказал, sleep()
и run()
могут быть статичными, там может быть классом Man
, который также спит и работает.
вопрос спросить:
ли смысл называть sleep()
и run()
или любую функцию класса без инициализации объекта этого класса? Если да, то имеет смысл сделать его статичным.
Если объект несет в себе состояние, то класс, кажется, путь. Полезные статические методы кажутся хорошим способом, когда ни одно государство не переносится. – skiwi
Код будущего кода - хороший код – Bathsheba
@skiwi Статические методы не выглядели хорошо, так как я начал использовать DI/IoC ..:> – user2864740