象棋子 设计模式_通过设计国际象棋游戏了解策略模式
象棋子 設計模式
今天,我們將借助一個示例來嘗試了解策略模式。
我們將考慮的示例是國際象棋游戲。 這里的目的是解釋策略模式,而不是構建全面的國際象棋游戲解決方案。
策略模式:策略模式被稱為行為模式–用于管理對象之間的算法,關系和職責。 策略模式的主要好處是在運行時選擇算法/行為。
讓我們嘗試通過實現設計棋盤游戲來理解這一點。
在國際象棋中,有不同的角色,例如國王,皇后,主教,并且所有角色都有不同的動作。 此設計可能有許多解決方案,讓我們一個一個地探索:
這是一個較差的設計,具有很強的耦合性,而且使用if / else使其難看。
因此,我們希望有一個設計,在其中可以進行松散耦合,可以在運行時確定運動算法,并且具有代碼可重用性。
讓我們看看使用策略模式的完整實現。
下面是我們的實現的類圖:
- 完整的源代碼可以從這里下載。
我們將有一個基本的抽象類作為Character Class,所有的角色都可以擴展并設置自己的MovementBehaviour實現。
public class Character {private MovementBehaviour movementBehaviour;String move(){return movementBehaviour.move();}public void setMovementBehaviour(MovementBehaviour movementBehaviour) {this.movementBehaviour = movementBehaviour;} }這個班級有一個運動行為:
public interface MovementBehaviour {String move(); }因此,每個角色:國王,女王,主教都將擴展角色,并且他們可以有自己的運動行為實現。
public class King extends Character {public King() {setMovementBehaviour(new SingleForward());} }為了簡單起見,在這里,我在King的構造函數中調用了setMovemementBehaviour方法。
同樣,另一個字符皇后可以定義為:
public class Queen extends Character {public Queen() {setMovementBehaviour(new SingleForward());} }并且,Bishop為:
public class Bishop extends Character {public Bishop() {setMovementBehaviour(new DiagonalMovement());} }不同動作的實現可以如下:
單向前進:
public class SingleForward implements MovementBehaviour {@Overridepublic String move() {return "move one step forward";} }對角運動:
public class DiagonalMovement implements MovementBehaviour {@Overridepublic String move() {return "Moving Diagonally";} }通過這個例子,我們可以理解策略模式。
翻譯自: https://www.javacodegeeks.com/2014/10/understanding-strategy-pattern-by-designing-game-of-chess.html
象棋子 設計模式
總結
以上是生活随笔為你收集整理的象棋子 设计模式_通过设计国际象棋游戏了解策略模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华为mate30支持防水吗
- 下一篇: 华为手机信号差怎么办