java - Java 类/继承结构
问题描述
所以我试图确定/记住我必须使用什么类型的界面/抽象来让这个布局做我想做的事。我有两种类型的对象:
小部件和组合小部件。我希望这两个都在其他类中实现。顾名思义,ComboWidget 是一个由多个 Widget 对象组成的基类。我还希望有一些样板功能,例如 addWidget()、removeWidget()、listWigets() 等,这些功能将应用于实现 ComboWidget 的所有项目。
小部件本身的作用与由小部件的特定实例(按钮小部件、填充栏小部件等)实现的相同。
我希望能够拥有一个面板或表格,用户可以添加任何小部件或组合小部件。因此,对于所述面板,我想将 Widget 或 ComboWidget 统称为 Widget 类,并且除了实现这些的任何其他对象之外,它还允许使用 Widget 或 ComboWidget。实现这一目标的最佳方法是什么?
解释这一点的最佳方法是绘制各种图:
Widget
|_ ComboWidget
|_ TableComboWidget
|_ BoomHeightComboWidget
|_ ButtonWidget
|_ FillBarWiget
|_ TextWidget
我希望能够制作一个显示 addWidget(Widget) 的函数,并且上述任何内容都可以作为参数放置。(除了 Widget 和 ComboWidget 本身,因为它们很可能是界面/摘要)
解决方案
你刚才描述的看起来很像一个复合模式
而且我认为您的班级布局没有任何问题。您的 addWigget 方法应该像您描述的那样工作。
推荐阅读
- html - css动画中的换行符
- typescript - 打字稿中索引签名对象类型的类型安全合并
- python-3.x - 如何解决时间数据与格式 '%m/%d/%Y %H:%M:%S' 不匹配
- compression - 如何将 FreeArc 压缩与 Inno Setup 结合使用?
- logging - Flutter 中良好的日志记录方法
- grpc - 在 C++ 流式 gRPC API 中,有没有办法检查 grpc 队列中缓冲了多少消息?
- asp.net - 手动将我的 aps.net Web 应用程序部署到 Azure Web 应用程序,而不使用 Visual Studio
- javascript - 即使编辑了 extensions_map,也无法在本地服务器上识别 .js mimetype
- flutter - 添加新页面后跳转到 PageView.builder 中的新页面似乎无法按预期工作 [Flutter]
- spring - 先前的集成测试使用当前测试队列消息