当多态性是';不可能时的良好设计
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
免责声明:
本页内容仅代表作者本人意见,若因此产生任何纠纷由作者本人负责,概与琴岛网公司无关。本页内容仅供参考,请您根据自身实际情况谨慎操作。尤其涉及您或第三方利益等事项,请咨询专业人士处理。