在我们的项目--C ++中,我们有一个名为" ContentCache"的通用模块。从这个内容缓存中,我们得出了客户特定的contentcache - 例如 - Airtel,TataSky。例如,基本contentCache有方法 - 创建数据库表,存储基本信息。具有像airtel内容缓存之类的关系的其他类型的contentcache是一种contentcache。这个airtel内容缓存是自定义的 - 覆盖了一些方法。但是,其余部分是相同的。在一些产品上,我们只使用泛型 - contentCache。我的问题是我们需要一个抽象类 - ContentCache - IcontentCache。另外,有什么好方法 - 创建一个抽象类或只创建一个通用基类。我们使用IContentCache(即抽象类)有什么好处。我从设计模式的角度来看待答案。另外,编程的观点。
答案 0 :(得分:2)
如果定义了某些功能,通常使用抽象类,只有在该类需要一些额外的,不可用的信息(或功能)时才能使用。不可用但必需的信息被定义为类的抽象方法,然后派生类提供额外的信息(或功能)。
在您的示例中,如果您可以有用地拥有通用ContentCache
,那么它不需要是抽象的。但是,如果不知道特定客户的名称,则可能无法实例化ContentCache
的设计。在这种情况下,您可以在抽象基类中定义所有缓存功能,并使用抽象方法提供客户名称。然后在派生类中提供返回该客户名称的实现,然后该类具有创建缓存所需的一切。
不可否认,这不是一个很好的例子,因为你可以在类的构造函数中提供客户名称,但是你提到在派生类中你可以覆盖一些方法'。如果这些方法提供的功能在不了解客户的情况下无法确定,则可能是抽象的候选方法。
答案 1 :(得分:0)
抽象类优于普通基类。从设计的角度来看,当我们设计基类时,我们知道会有继承(虚函数)。因此,我们尝试收集基类中的常用函数,这些函数主要是在派生类中过度使用。抽象意味着从外部世界隐藏实际的实现。我们的实现是我们的财富。所以基类只需要作为一种接口工作,它不应该有任何实现。
当你的派生类总是使用派生类函数定义rathar而不是使用基类定义时,抽象类对你有好处。
如果要将基类虚函数定义与派生类函数定义一起使用,则普通基类将非常有用。正常的基类对小的继承级别有好处。