public static final function getInstance()
    {
        return parent::getInstance();
    }
    public static final function removeInstance()
    {
        parent::removeInstance();
    }
}
//using
class FirstProduct extends Factory
{
    public $keys = [];
}
class SecondProduct extends FirstProduct
{
}
FirstProduct::getInstance()->keys[] = 1;
SecondProduct::getInstance()->keys[] = 2;
FirstProduct::getInstance()->keys[] = 3;
SecondProduct::getInstance()->keys[] = 4;
FirstProduct::getInstance()->keys[] = 5;
var_dump(FirstProduct::getInstance()->keys);
var_dump(SecondProduct::getInstance()->keys);
var_dump(FactoryAbstract::getInstanceList());
FirstProduct::removeInstance();
var_dump(FactoryAbstract::getInstanceList());
var_dump(FirstProduct::getInstance()->keys);
var_dump(SecondProduct::getInstance()->keys);
var_dump(FactoryAbstract::getInstanceList());