当多态性是'不可能时的良好设计

2021-02-05 02:39

I正在为实体组件系统开发可视化编辑器。编辑器必须能够修改不同组件子类型的成员,因此每个组件子类型都有一个特定的窗口。问题是我们不能修改组件来实现多态方

解答动态

  • 问题是我们不能修改组件来实现多态方法来显示正确的窗口,因为它是一个外部库。
    您可能无法修改组件,但您几乎可以肯定地组合它们来产生相同的效果。伪代码,适应你的喜好语言:
    接口IComponent{void display();}类PositionComponent:IComponent{private Position}PositionComponent(Position p){u p=p;}void display(){new PositionEditorWindow(_p).display();}类VelocityComponent:IComponent{private Velocity}v;VelocityComponent(Velocity v){_v=v;}void display(){new VelocityEditorWindow(_v).display();}}} 您的编辑函数现在可以调用IComponent.
    上的display这当然是facade的一个示例图案:
    A子系统中一组接口的统一接口。Facade定义了一个更高级别的接口,使子系统更易于使用。这可用于将许多复杂的对象交互简化为单个接口。
    是的,您完全可以/应该向facade添加更多功能,以表示组件可以执行的其他操作。

    • End

    免责声明:

    本页内容仅代表作者本人意见,若因此产生任何纠纷由作者本人负责,概与琴岛网公司无关。本页内容仅供参考,请您根据自身实际情况谨慎操作。尤其涉及您或第三方利益等事项,请咨询专业人士处理。