当前位置: 首页 > 知识库问答 >
问题:

设计一个家具类,包括木椅、木桌等

岑经纶
2023-03-14

我想,既然我们基本上是在构建家具类型,我们应该在这里使用一个builder模式,其中包含具有类型(椅子/桌子)和make(铁/木)等属性的家具类,然后我们就有了一个具有以下功能的接口builder:buildLegs(..)、buildSurface(..)以及子类(如ChairBuilder、TableBuilder和一个Director类)来实例化它们。我们可以在不影响现有设计的情况下,添加任意类型的家具,并为它们构造一个builder类。

读完Builder Vs Decorator pattern之后,我确信这里不应该使用Decorator pattern。但是Builder也可以吗?是矫枉过正吗?

另外,我不知道如何处理家具的制作。为make添加一个枚举类型的特性就足够了吗?[钢,铁,木]制造商并没有真正增加任何新的行为家具项目。

共有1个答案

伯庆
2023-03-14

看起来有些东西需要在现有的类中进行重构,这也可能有助于避免为将来出现的每一个需求创建一个新的类。不过,这完全取决于上下文:清单应用程序需要的椅子模型与需要以3D形式显示椅子的软件完全不同。你怎么知道的?问问面试官,然后你就知道他们希望你去哪里。

无聊的例子:椅子有一些共同的行为/数据,可以在不同的类中重构出来,桌子也是一样。现在如何选择代表材料?同样,这取决于领域,问面试官。这也是您使用的语言的问题:您选择的语言支持多重继承吗?您到底需要(或想要)使用多重继承吗?支持组合而不是继承可能是有意义的。你为什么要走这条路或那条路?您甚至需要一个类来表示这段信息吗?

我们该怎么做。

询问面试官,他们会引导你找到解决方案。对于一个如此广泛的问题,没有一个正确的答案,他们希望你提出问题,看看你是怎么想的。这就是说,尽管问题很广泛,但它的表述方式可能是一种暗示,您应该重构一些东西,以避免为家具和材料的每一个新组合创建一个类。

可能的解决办法:

    null
 类似资料:
  • 个性积木赋予程小奔”人格“魅力,让它会笑会闹会撒娇。 添加个性积木 1. 在”设备“下,选中”程小奔“。点击积木区最下方的”+“按钮。 2. 在弹出的”扩展中心“页面,选择”个性“,点击”+“。 3. 返回编辑页。瞧,积木多了一种类型:个性。 使用个性积木 让我们来试试新的个性积木吧。我们来制作一个小游戏,程小奔无意中走进一个山洞,洞里都是金币,它非常开心地将所有金币收入囊中。 开始编程前,要先将

  • 建木持续集成平台是基于建木自动化平台提供的国产开源CI/CD产品,致力于为国内开发者提供简单易用、方便快捷的开发体验,推广DevOps的最佳实践,填补国内开源软件供应链中缺失的一环。 主要功能: 事件桥接器:提供外部系统触发流程执行的事件桥接转换机制,当前只支持Webhook方式调用。 配置即代码:提供两种不同的DSL语法来描述配置CI/CD流程。同时支持本地创建和远程Git导入两种方式来创建项目

  • 积木(building block 简称BB)是一个Java 后台管理系统。像积木一样搭建管理平台,修改自EOVA前端调整成layui(后端模板layuicms)。 Eova采用的是引擎模式 支持单表、一对多表等。 设计分为 控件、组件、业务三层,组件由控件组装成,业务由组件构成,每层均可自由定制。理论上每种控件,每种组件,每种业务只实现一次,后续直接复用。(结尾附软件操作视频) 环境准备 软件环

  • 我有一个spring boot应用程序,在它启动后,我们通常会看到控制台的以下输出 等... 我需要得到这个日志输出: 并使用slf4j将其放入文件中 我有一份申请。设置为slf4j的属性 但我没有得到文件的完整输出。只有对我的GetMappings的响应 例如 我该怎么做? 非常感谢。

  • 温馨提示:该项目已开源,除商业用途外,用户可以自由使用。 Blockscloud Web OS 这个系统从2014年最初的idea到2017年已经有两年半的时间了,时光荏苒。作者是一个php程序员,开发过程中总是为找一个好的、可扩展的后台模板而苦恼,积木云的早期版本使用了芒果云+onethink整合,但碍于芒果云不提供源码以及TP官方对onethink放弃支持,造成了旧版本积木云维护的异常困难。于

  • 一、本功能说明 本节提供了对整个网站的扫描并和镜像进行对比,以便找出非法文件 二、子功能导航 1.生成nd5 2.木马查杀 3.功能演示 4.查杀报告 三、功能详解 1.生成MD5 1).如何进入本功能 导航栏 选择扩展 -> 菜单栏 选择木马查杀 -> 生成MD5 稍等片刻即可完成 注意事项:   在生成MD5镜像之前强烈建议您确保当前的文件未被恶意修改或者嵌入了木马文件! 2.木马查杀 镜像生