How does \Magento\Catalog\Model\Product\Type::factory() work?

Context: How does \Magento\Catalog\Model\Product::getTypeInstance() work?

How does \Magento\Catalog\Model\Product\Type::getTypes() work?