【发布时间】:2020-01-22 22:34:26
【问题描述】:
我在面试时遇到了这个问题,我不知道如何正确回答。问题是我们有一个家具系统,我们可以管理不同的家具。每件家具都有自己的material(例如:木头、铁)和name、type(例如:椅子、桌子、桌子)。
对于每件家具,我们可以致电isFireApproved() 和getWeight()。
首先,我在顶部绘制名为Furniture 和Material 的基类。在家具下,我放置了不同类型的家具,如桌子、椅子,并对材料类做了同样的事情。如下图。
然后,我说如果我们想生产像woodchair这样的新家具,我们可以创建一个名为woodchair的新类,它继承wood类和chair类。
然后面试官问如果我们有成千上万种不同的家具怎么办?在这种架构中可能会发生什么以及如何解决它?我基本上卡在这里并回答我们可以制作一个通用类,将家具类型和材料传递给实例。
例如:
wood_iron_wardrobe = CommonFurniture(type=[Wardrobe], materials=[Wood, Iron])
在构造函数中,我们利用这些参数来创建一个新的家具项目。根据面试的面相,我认为我没有按照正确的方向回答。这个设计有什么建议吗?或者有没有学习OOD的推荐?
【问题讨论】:
标签: oop