对于我当前的项目,我正在为java File类包装,并为路径String(即C:\Users\Public\)包装。
让我们将FileFileWrapper的包装器和路径PathWrapper的包装器称为。
FileWrapper显然必须具有路径:FileWrapperFile在磁盘上的位置。现在我的问题是...FileWrapper应该包含PathWrapper类型的字段(以及PathWrapperPathWrapper.getPath()的访问器方法),还是应该扩展PathWrapper,从而继承getPath()方法?

我遇到的问题是严格地说FileWrapper不是Path。这只是一个文件。但是在这种情况下,仅使用继承似乎更简单。

我正在考虑的第二个解决方案还有另一个问题(在getPath()中创建FileWrapper方法)。我想创建一个PathFileWrapper都将实现的PathWrapper接口,以允许同时包含FileWrapperPathWrapper的列表。
如果FileWrapperPathWrapper的子类,则不需要此接口。

最佳答案

OO设计规则:支持组合而不是继承,因为组合(具有关系)为代码提供了更大的灵活性

就像您说的那样,FileWrapper不是PathWrapper,您回答了您的问题。

您要将它们绑定在一起,可以将PathWrapper传递给FileWrapper的构造函数。

例如,如果您想同时获得一个Collection,则可以创建一个Wrapper接口,其中FileWrapperPathWrapper是此层次结构中的同级兄弟,并共享可以由它们各自实现的不同的通用抽象方法。

许多设计模式都可以应用于此示例,您需要做的就是首先确定您要的内容。

07-27 23:06