因此,我正在编写一个群集系统(http://www.red3d.com/cwr/boids/)。
每个boid计算它的向量,我想用一个帮助器类来绘制这些向量,以便进行调试。
谁应该实现DrawAllLines函数?
请注意,我使用的是c#,所以没有像C++那样的朋友功能。
请注意,DrawAllLines在现实中要大得多,这就是为什么我想将代码移到另一个类。
Boid
public class Boid
{
private Vector3 cohesion;
private Vector3 separation;
private Vector3 aligment;
public void DrawLines()
{
DrawLine(cohesion);
DrawLine(separation);
DrawLine(alignment);
}
}调试
public class Debug{
public DrawAllLines()
{
foreach(Boid b in allboids)
{
b.DrawLines()
}
}
}Boid
public class Boid
{
public Vector3 cohesion;
public Vector3 separation;
public Vector3 aligment;
}调试
public class Debug()
{
public void DrawAllLines()
{
foreach(Boid b in allboids)
{
DrawLine(b.cohesion);
DrawLine(b.separation);
DrawLine(b.alignment);
}
}
}发布于 2017-06-12 19:18:15
有几件相关的事情我们想拆散,
在我们的第一种情况中,我们让Boid通过访问限制(通过使这些字段是私有的)隐藏它的信息,这导致了一个问题,即任何要求该信息的责任都必须由类本身承担。这导致代码紧密耦合功能,很难测试、维护和扩展。
我们的第二次尝试放弃了访问限制和信息隐藏,以便允许另一个类承担绘制Boid的责任。
在这种情况下,我想说第二次尝试要比第一次尝试要好,但是使其更好的是使Boid不可变,或者至少使这些属性只读。
对于我们设计的这三个方面,没有简单的公式,但是我们可以拿出一些简单的准则
我发现遵循这些规则可以简化设计决策,从而促进清洁设计。
https://softwareengineering.stackexchange.com/questions/350715
复制相似问题