我正在嘗試將撲克遊戲轉換爲正確的OOP模式。
基礎知識:如何避免使用屬性「填充」泛型類?
class Hand
{
Card cards[];
}
class Game
{
Hand hands[];
}
我從一個文本文件,遊戲和手。我分析文本文件幾次,有以下幾個原因:
- GET薩姆的相關信息(原因1)
- 計算一些統計數據(原因2)
- ...
對於原因1我需要Hand類中的一些屬性(a1,b1)。對於原因2,我需要一些其他屬性(a2,b2)。我認爲骯髒的方式將是:
class Hand
{
Card cards[];
Int a1,b1;
Int a2,b2;
}
我的意思是說,有些屬性大多數時間是無用的。 所以,更清潔,我們可以這樣做:
class Hand
{
Card cards[];
}
class HandForReason1 extends Hand
{
Int a1,b1;
}
但我覺得用錘子...
我的問題是:有沒有中間道路?或者錘子解決方案是好的嗎? (在這種情況下,什麼是正確的語義?)
PS:設計模式歡迎:-)
PS2:策略模式是錘子,不是嗎?
*編輯* 下面是一個應用程序:
// Parse the file, read game infos (reason 1)
// Hand.a2 is not needed here !
class Parser_Infos
{
Game game;
function Parse()
{
game.hands[0].a1 = ...
}
}
// Later, parse the file and get some statistics (reason 2)
// Hand.a1 is not needed here !
class Parser_Stats
{
Game game;
function Parse()
{
game.hand[0].a2 = ...
}
}
儘管使用html格式化您的文章將會或多或少的工作,但您會發現使用Stack Overflow提供的降價引擎更容易,更快速。 [編輯幫助頁面](http://stackoverflow.com/editing-help)。 – dmckee 2010-12-01 16:09:08
我認爲,如果您爲「屬性」使用真實生活的例子,我們將更容易掌握您的問題。 a1和b1,a2和b2究竟意味着什麼? – Fortega 2010-12-01 16:29:04