这句话意味着什么:“类接口必须提供一致的抽象”?

时间:2009-10-12 16:45:58

标签: oop

目前,我正在阅读Code Complete,在章节处理类中,作者说

  

类接口必须提供一致的抽象

我无法正确理解这一陈述,如果有人可以提供解释的例子以及相关的利弊,我将不胜感激。

感谢。

1 个答案:

答案 0 :(得分:1)

想象一下,您有一个与某些存储设施进行交互的界面。接口的客户端/用户应该能够存储和检索对象。此外,您将在存储中拥有“种类”的对象,并且在存储或检索时,客户端必须指定它们存储或检索的对象类型。因为我们喜欢类型和厌恶字符串,所以他们会用类型来做。所以:

interface ObjectStorage
{
    void storeObject( object, type );
    object retrieveObject( type );
}

接口的实现只想指定它能够处理的类型,因此定义了接口实现的类型。

此上下文中的“一致抽象”意味着接口的抽象应该在同一级别上。不一致的抽象将定义接口中的实现类型,如下所示:

interface ObjectStorage
{
    void storeObject( object, FileType );
    FileType retrieveObject( FileType );
}

这会将任何实现绑定到仅与FileType或其子类型一起使用。

我希望我的回答有点连贯。