问题描述
|
我正在开发我的游戏框架,出于参数考虑,我有一个TimeService,它负责计算帧/增量时间和应用程序已运行的总时间。 TimeService从具有Update()方法的Service派生。揭示TimeService的数据(例如DeltaTime和TotalTime)但隐藏Update()方法以确保不使用DeltaTime或TotalTime进行任何操作的最佳方法是什么,会意外地调用Update()并丢弃所有计时? ServiceManager每帧调用一次Update()方法,因此才公开它。
有想法吗?
解决方法
我会使用接口。基本上,您有一个需要知道时间的事物,而另一个有需要控制时间的事物。
, 一种干净的方法是使用外观模式。定义一个仅声明要公开的方法的类(DeltaTime,TotalTime等)。实现它以将那些调用中继到与其关联的(隐藏)TimeService对象。
, 我同意接口上的@stonemetal。例如,在C#中,您可以显式实现接口,以便仅通过接口引用才能看到接口方法。
另一个选择是使用访问修饰符来降低Update方法的可见性(使其内部,成为朋友等)。
这在很大程度上取决于您的编程语言。很难给出与语言无关的答案。