java-处理不同类型的对象之间的交互的设计模式
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-处理不同类型的对象之间的交互的设计模式,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2335字,纯文字阅读大概需要4分钟。
内容图文
![java-处理不同类型的对象之间的交互的设计模式](/upload/InfoBanner/zyjiaocheng/667/4ee24732d06c45bf956cec249098b74b.jpg)
我有一个C#程序,该程序具有一个名为Ball的类,该类具有两个名为BallColor和BallType的枚举字段.有7种球颜色(红色,蓝色,黄色等)和7种球类型(网球,足球,保龄球等).球形物体可以具有颜色和类型的任何可能组合.
在我的程序中,我有许多不同颜色和类型组合的Ball对象.球可以通过碰撞彼此相互作用.当两个球碰撞时,它将触发一个交互,该交互由名为handleInteraction(ball1,ball2)的函数处理.两个球之间的相互作用取决于每个球的类型和颜色.例如,如果有一个保龄球击中任何一个乒乓球,则乒乓球将被破坏,并且保龄球将继续以其原始速度运动.但是,如果有任何足球与保龄球相撞,则足球会从保龄球弹回,并且保龄球的速度会降低n.另一个示例是,如果红色的网球与绿色的乒乓球发生碰撞,则乒乓球会从网球上弹起,并且乒乓球的颜色会更改为与网球相同的颜色(红色).
在我的handleInteraction(ball1,ball2)函数中,我一直在使用嵌套的switch语句来处理交互.但是,随着我编写更多的代码来处理所有情况,嵌套的switch语句似乎并不是正确的方法.
谁能想到一种更好的方式处理球之间的相互作用?
解决方法:
一种解决方案是为交互结果和球创建接口:
public interface IInteractionResult
{
void Handle();
}
public interface IBall
{
BallTypeEnum BallType { get; }
IInteractionResult HandleInteraction(IBall ball);
}
并实现实现IInteractionResult的每个可能的类,其中Handle方法提供了用于交互的逻辑:
public class DestroyInteractionResult : IInteractionResult
{
public void Handle()
{
//your code for destroy result behaviour
}
}
public class BounceInteractionResult : IInteractionResult
{
public void Handle()
{
//your code for bounce result behaviour
}
}
public class NothingInteractionResult : IInteractionResult
{
public void Handle()
{
//your code for nothing
}
}
之后,实现Ball的类,该类将在HandleInteraction的实现中使用switch语句实现IBall.例如SoccerBall:
public class SoccerBall : IBall
{
public BallTypeEnum BallType
{
get { return BallTypeEnum.Soccer; }
}
public IInteractionResult HandleInteraction(IBall ball)
{
switch (ball.BallType)
{
case BallTypeEnum.Soccer:
return new BounceInteractionResult();
case BallTypeEnum.Bowl:
return new DestroyInteractionResult();
case BallTypeEnum.PingPong:
return new BounceInteractionResult();
// and so on
}
throw new NotImplementedException("Undefined ball type");
}
}
每种球类型和每种交互作用的单独类有助于您将每种类型的单个逻辑收集到单个类中.
而且您的handleInteraction看起来像:
public void handleInteraction(IBall ball1, IBall ball2)
{
var interaction = ball1.HandleInteraction(ball2);
interaction.Handle();
}
我认为这是最灵活的解决方案.某种策略模式.
内容总结
以上是互联网集市为您收集整理的java-处理不同类型的对象之间的交互的设计模式全部内容,希望文章能够帮你解决java-处理不同类型的对象之间的交互的设计模式所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。