隐藏类的公共方法/接口的最简单方法

Kev*_*vin 5 java model-view-controller design-patterns

我正在尝试设计机器人模拟器的GUI前端(实际上是一个简单的游戏).但是,我不知道将模拟器组件(例如机器人和墙壁)传递给显示器的最佳方法.我想要隐藏组件的非显示方向信息(例如机器人质量),但仍然能够识别每个组件的打印,即当我绘制组件时,我想以不同的方式绘制机器人我做墙壁(也许机器人会有一个名牌或其他东西).

这张照片有望解释设计: 程序设计

也许有一种有用的设计模式,我还没有遇到过......

Koj*_*tak 1

查看模型-视图-控制器设计模式。它将数据(机器人的速度、大小……)、表示(机器人的形状及其绘制方法)和行为(提高机器人速度)分开。

回答你的问题 - 隐藏类 API 部分的最简单方法是将此类拆分为多个部分(模型、视图、控制器)并根据某种模式(MVC 或模型视图演示器,它们有很多)连接它们其中)。

编辑:抱歉我没有提供任何示例。我的建议是将 Robot 分为两类:

  • RobotData(包含速度、大小……提供 getters/setters、简单的 java bean 对象)
  • RobotUi(提供形状方法(使用RobotData的私有引用))

然后 Simulator 包含 RobotUi 的集合(Simulator 是一个model)和 SimulatorDisplay (= view)在执行绘制方法时迭代 UI 对象。RobotData 将隐藏在 RobotUi 内部。