Oop 构建代码中常见和独特的行为

Oop 构建代码中常见和独特的行为,oop,Oop,我正在设计一个实用程序来备份应用程序 备份功能将包含要执行的常见任务(常见代码)和一些独特的步骤。我是否在正确的轨道上使用了一个用于唯一行为的接口和一个用于所有孩子共同行为的抽象基类?这种方法有什么缺点吗?还有更好的吗 谢谢如果基类实际上实现了一些行为,那么我认为它被称为非抽象基类 无论如何,我认为这就是所谓的:您可能想在模式字典中查找它(它应该解释什么时候合适,并引用任何类似的替代模式)。我不会使用抽象基类来共享公共功能,而只是表达is-a关系。如果D来自B,那么无论B在哪里,D都可以出现。这

我正在设计一个实用程序来备份应用程序

备份功能将包含要执行的常见任务(常见代码)和一些独特的步骤。我是否在正确的轨道上使用了一个用于唯一行为的接口和一个用于所有孩子共同行为的抽象基类?这种方法有什么缺点吗?还有更好的吗


谢谢

如果基类实际上实现了一些行为,那么我认为它被称为非抽象基类


无论如何,我认为这就是所谓的:您可能想在模式字典中查找它(它应该解释什么时候合适,并引用任何类似的替代模式)。

我不会使用抽象基类来共享公共功能,而只是表达is-a关系。如果D来自B,那么无论B在哪里,D都可以出现。这是使用公共继承的标准

尽管可以使用私有继承,但在某些语言中只能从一个类派生


这让我们想到了应该是第一个-您应该考虑责任并将功能封装到它所属的任何地方,向客户机公开接口(或C++中的纯抽象类),并在从这些接口派生的具体类中实现功能。

在这种情况下,is-a可能是is-a-backup-strategy,或者is-a-type-of-object-which-can-backup-up。我的观点是-“用于常见行为的抽象基类”=>您不使用用于常见行为的抽象基类,但仅仅是为了表达is-a关系。鸟和飞机的行为方式是一样的——它们会飞。您会创建一个名为Flier的抽象基类,并使用名为Fly()的方法和默认实现吗?还是界面呢?很难想象一只鸟和一架飞机有什么“共同行为”;但是(例如)一架客机、一架私人螺旋桨飞机和一架直升机都可能由空中交通管制控制,因此,如果我设计一个ATC系统,那么这些可能都是一个公共基类的子类。无论它们都实现相同的纯抽象接口,还是它们都是相同的非抽象基类的子类,IMO:一个实现细节。你的问题是非常特定于语言的,而不是OOP设计的一般性问题。看起来你是在假设Java或C(到目前为止,我猜答案都是这样假设的),但请陈述一下