Ben kullanıcı kendi sınıfları türetmek hangi bir Singleton taban türünü tanımlamak istiyorsanız, bu yüzden bu ne düşünülmektedir:
interface SingletonInterface {
public static function getInstance();
}
abstract class SingletonAbstract implements SingletonInterface {
abstract protected function __construct();
final private function __clone() {}
}
Ama bu yaklasimimizi kullanarak kullanıcı bu tekiz uygulayabilir ...
class BadImpl implements SingletonInterface {
public static function getInstance() {
return new self;
}
}
Ne yaklaşımın olurdu?