Стандартный класс Math - полностью статический.
И это логично, потому что по сути это набор методов-утилит, каждый из
которых сам по себе. Существование экземпляра класса Math не добавит
никаких возможностей. В добавок к этому расширять класс Math при помощи
наследования вряд ли кому-то понадобится (встроенные реализации
математических функций работают очень быстро, и наследование стало бы
потерей производительности в десятки-сотни раз).
Синглтон отличается тем, что экземпляр все-таки для чего-то нужен
(например, для рассылки и приема событий, для содержания своей области
видимости переменных). К тому же при обращении через экземпляр, можно
пользоваться имплементированным в классе интерфейсом. И синглтон можно
расширить.
Многие считают использование синглтона плохой практикой.
В гугле много статей на эту тему.
http://c2.com/cgi/wiki?SingletonsAreGood
http://c2.com/cgi/wiki?SingletonsAreEvil
У Ярового, кстати, заметка есть на эту тему.
http://yarovoy.com/2007/10/20/singleton_vs_static_members/
--
Michael Antipin
______________________________________________________________________
n...@design.ru | http://www.artlebedev.ru | http://www.noregret.org