我想创建一个泛型类,其构建器不会返回此泛型类的实例,而是返回专用子类的实例.
当Moose进行自动对象构建时,我无法理解这是否可能,以及如何使用Moose语法创建一个Moose类并具有此行为.
例如:用户询问:$file = Repository->new(uri=>'sftp://blabla')....并返回一个`Repository :: _ Sftp``实例
用户将使用$file好像它是一个Repository实例,而不需要知道真正的子类(多态)
注意:
根据要求,也许我应该更清楚我想要实现
的目标:我的类的目的是能够通过简单地创建一个"隐藏的"存储库来添加新的存储库方案(例如,通过sftp) _Stfp类,并在Repository构造函数中添加一个case来根据url生成正确的专用对象.存储库就像一个虚拟基类,提供专用对象实现的接口.
所有这些都是为了添加新的存储库方案而不需要修改程序的其余部分:它会在不知不觉中处理专用实例,就像它是一个Repository实例一样.