Не буду рассказывать, что такое singleton и для чего он нужен. Расскажу про то, как его писать.