您正在用Java编写俄罗斯方块程序.您将如何根据以下方面设置课程设计?
Piece类,内部数组决定了作品的形状,而不是七个Piece类,每个作品一个.它们都是一个通用Piece类的子类.Block,代表一个方块的一个,每个Block包含它在Board上的位置(在图形坐标中)而不是具有4x4数组,这null意味着那里没有块,并且确定了位置通过阵列的形状.Block中的每个位置都存储其位置,并且知道构成它们的位置.PieceBoardPieceBoardBlocksgetRandomPiece,或者PieceFactory你在其中创建一个实例的genRandomPiece方法.Proxy模式,以便需要访问它的所有内容只使用代理,或者getCurrentPiece在Board类上有一个方法,并在您想要使用当前部分执行某些操作时调用它.这不是功课.我只是对我的大学里介绍CS课程的内容不和,我想看看人们普遍认为的是什么.什么被认为是"好"的OOP设计?忽略这是一个介绍课程的事实 - 你会怎么做?
Tom*_*ing 10
首先,我不会将该Piece类子类化,因为它是不必要的.所述Piece类应该是能够描述不使用继承的任何形状.恕我直言,这不是继承所做的,它只会让事情复杂化.
其次,我不会将x/y坐标存储在Block对象中,因为它允许两个块存在于同一个地方.这些Piece类将保持一个包含块对象的网格(即2D数组).x/y坐标将是2D阵列的索引.
至于获取随机片段的静态方法vs工厂对象,我会使用工厂对象,因为工厂对象可以被模拟用于测试.
我会把董事会视为一个大Piece对象.的Board类将保持大Piece对象作为成员变量,并且可能保持其他Piece作为正在播放的当前片的物体,以及要被播放的下一个片.这是使用组合来完成的,以避免继承.