我有一块电路板,电路板上有移动的瓷砖。 非常简单,我的模型将有一个Board类和一个Tile类什么是POCO和Board“has”tile(Board有一个IList< Tile>)
我有一个UI(Unity3d行为)说BoardBehaviour“有一个”董事会。但这里开始我的问题。我还有TileBehaviour UI对象“有一个”平铺。这似乎是多余的,因为:
我有点困惑......
如何连接模型和实际UI类的任何想法?
答案 0 :(得分:1)
是一种关系:当你从基类继承时,派生类是一个基类;即汽车是一种车辆;
有一种关系:当你说班级有某种东西(组成)时,即汽车有引擎。 发动机是汽车的一部分。
所以在这里移动Tile是董事会的一部分。所以董事会“有一个”平铺。
当您实现行为(Inherit property)时,它的“是一个”关系。没有冗余。
BoardBehaviour "has a" Board.
董事会有董事会行为。
Board class实现BoardBehaviour。 Tile类实现了TileBehaviour。 Board类在Tile中的内部类(或者你可以在Board中创建新的Tile对象,如果需要Tile作为单独的类)。
答案 1 :(得分:1)
BoardBehaviour和TileBehaviour可能是坏课程。让我们分析一下现状。 BoardBehaviour有董事会成员。这很奇怪。事实上,董事会应该有行为。这就是为什么我可以建议创建基类BehaviourItem,它将具有所有行为功能。 Board和Tile应该从BehaviourItem继承。这应该解决一些复杂性问题。
答案 2 :(得分:0)
有一个
董事会有瓷砖。 BoardBehavior有TileBehaviors
这是一个理论构造函数:
BoardBehavior(Board board, ...)
{
this.m_tileBehavoirs = board.Tiles
.Select(tile => new TileBehavior(tile, ...)).ToList();
}
答案 3 :(得分:0)
我建议这样的事情:你应该有两个接口1. BoardBehavior 2. TilesBehavior。分别在Class Board和Tiles中实现它们。现在,董事会应该有瓷砖清单。这个问题可以通过关联或组合来解决。我建议你应该联想。这意味着在您的Board类中,我们可以引用仅实现TilesBehavior的Tile List。我希望我在这里听起来不太复杂。如果我是,请告诉我,我将提供这种方法的代码,以使其更清晰。