最近,我用 java MVC 框架編寫了一個(gè)簡(jiǎn)單的游戲,一位高級(jí)程序員在審查后告訴我,得分是不安全的,其 getter 和 setter 在玩家模型本身中定義。不幸的是,我無(wú)法從他們那里獲得更多關(guān)于如何以及為何如此的信息,而且我無(wú)法弄清楚為什么。有人可以回顧一下這些類并指出為什么這種架構(gòu)不可取嗎?播放器型號(hào):public class player implements Comparable<player>{ private int score; private int consecutive_misses; private String name; private int foul_count; private int turn; private boolean win; public player() { this.score=0; this.consecutive_misses=0; this.foul_count=0; this.win=false; } public void setWin(boolean win) { this.win=win; } public boolean getWin() { return this.win; } public void setPlayerName(String name) { this.name=name; } public void setTurn(int turn) { this.turn=turn; } public int getTurn() { return this.turn; } public void addScore(int score) { this.score+=score; } public String getName() { return this.name; } public int getScore(){ return this.score; } public void resetFoulCount() { this.foul_count = 0; } public void incrementFoulCount() { this.foul_count++; } public int getFoulCount() { return this.foul_count; } public void resetConsecutiveMisses() { this.consecutive_misses = 0; } public void incrementConsecutiveMisses() { this.consecutive_misses++; } public int getConsecutiveMisses() { return this.consecutive_misses; } public int compareTo(player comparePlayer) { int compareScore=((player) comparePlayer).getScore(); return compareScore-this.score; }}
1 回答

Qyouu
TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超11個(gè)贊
類不應(yīng)該暴露它的內(nèi)部結(jié)構(gòu)。通過(guò)暴露其內(nèi)部結(jié)構(gòu),它違反了許多法律,例如德米特法則,其他類別可以利用這種情況并設(shè)置他們想要的任何分?jǐn)?shù)。
添加回答
舉報(bào)
0/150
提交
取消