我有一个名为ILoader
的界面。这适用于加载资源文件的一种对象。
ILoader = interface
function Load: TObject;
function FormatName: String;
end;
非常简单。现在,我希望有多种类型的Loader
,TSurfaceLoader,TSoundLoader,TMusicLoader等。
问题是,如何在interface
中指定从函数返回什么? SurfaceLoader
会加载曲面,但Surface
不是TObject
,因此无效。
我该怎么办?只是抛弃界面? (我可能会扩展它,它不会总是那么小。)
答案 0 :(得分:0)
界面是精确的契约,所以你不能让它变量。
解决方案就是简单地进行类型转换:
something_of_tsurfaceloader:=TSurfaceLoader(myILoaderIntf.GetObject);
设计界面可能更好或没有,这取决于。那些日常的选择使得程序员的生活变得有趣:)