Вы не можете применить его через интерфейс, потому что, если у вас был такой интерфейс, как:
public interface ISingleton
{
ISingleton GetInstance();
}
Во-первых, интерфейс охватывает только методы экземпляра, а не статические, что вы хотите длясинглтонВо-вторых, нет ничего, что могло бы обеспечить, чтобы GetInstance
возвращало синглтон;он мог бы, но он также мог бы каждый раз возвращать новый объект, объект из пула и т. д.
Это разумно, синглтон - это шаблон реализации, а не шаблон общего проекта (одна из причин, почему егов большинстве случаев часто рассматривается как анти-шаблон), поэтому мало смысла в том, чтобы интерфейс (в общем смысле) обещал реализацию, гораздо лучше иметь интерфейс (опять же, в общем смысле), обещающий вернуть работоспособный экземпляр,и оставьте реализацию на усмотрение рассматриваемого класса.