首页 > 其他分享 >软件设计-Tutorial13

软件设计-Tutorial13

时间:2024-11-11 23:18:49浏览次数:1  
标签:Tutorial13 String 软件设计 public int class color ChessPieceFactory

```mermaid
classDiagram
    class ChessPiece {
        <<abstract>>
        +String color
        +display(int x, int y)
    }

    class WhiteChessPiece {
        +display(int x, int y)
    }

    class BlackChessPiece {
        +display(int x, int y)
    }

    class ChessPieceFactory {
        -static ChessPieceFactory instance
        -Map<String, ChessPiece> chessPieceMap
        +static getInstance() ChessPieceFactory
        +getChessPiece(String color) ChessPiece
    }

    class ChessBoard {
        -List<Move> moves
        +placePiece(String color, int x, int y)
    }

    class Move {
        +String color
        +int x
        +int y
    }

    ChessPiece <|-- WhiteChessPiece
    ChessPiece <|-- BlackChessPiece
    ChessPieceFactory --> ChessPiece
    ChessBoard --> ChessPieceFactory
    ChessBoard --> Move
```
package Tutorial13;

import java.util.ArrayList;
import java.util.List;

class ChessBoard {
    private List<Move> moves = new ArrayList<>();

    public void placePiece(String color, int x, int y) {
        ChessPiece piece = ChessPieceFactory.getInstance().getChessPiece(color);
        piece.display(x, y);
        moves.add(new Move(color, x, y));
    }

    private class Move {
        String color;
        int x, y;

        Move(String color, int x, int y) {
            this.color = color;
            this.x = x;
            this.y = y;
        }
    }
}
package Tutorial13;

abstract class ChessPiece {
    protected String color;

    public abstract void display(int x, int y);
}

class WhiteChessPiece extends ChessPiece {
    public WhiteChessPiece() {
        this.color = "白";
    }

    @Override
    public void display(int x, int y) {
        System.out.println("在位置 (" + x + ", " + y + ") 放置 " + color + " 棋子");
    }
}

class BlackChessPiece extends ChessPiece {
    public BlackChessPiece() {
        this.color = "黑";
    }

    @Override
    public void display(int x, int y) {
        System.out.println("在位置 (" + x + ", " + y + ") 放置 " + color + " 棋子");
    }
}
package Tutorial13;

import java.util.HashMap;
import java.util.Map;

class ChessPieceFactory {
    private static ChessPieceFactory instance;
    private Map<String, ChessPiece> chessPieceMap;

    private ChessPieceFactory() {
        chessPieceMap = new HashMap<>();
    }

    public static ChessPieceFactory getInstance() {
        if (instance == null) {
            instance = new ChessPieceFactory();
        }
        return instance;
    }

    public ChessPiece getChessPiece(String color) {
        ChessPiece chessPiece = chessPieceMap.get(color);
        if (chessPiece == null) {
            if (color.equalsIgnoreCase("白")) {
                chessPiece = new WhiteChessPiece();
            } else if (color.equalsIgnoreCase("黑")) {
                chessPiece = new BlackChessPiece();
            }
            chessPieceMap.put(color, chessPiece);
        }
        return chessPiece;
    }
}
package Tutorial13;
public class GoGame {
    public static void main(String[] args) {
        ChessBoard board = new ChessBoard();
        board.placePiece("白", 0, 0);
        board.placePiece("黑", 1, 1);
        board.placePiece("白", 2, 2);
        board.placePiece("黑", 3, 3);
    }
}

 

标签:Tutorial13,String,软件设计,public,int,class,color,ChessPieceFactory
From: https://www.cnblogs.com/muzhaodi/p/18540805

相关文章

  • 软件设计-Tutorial12
    packageTutorial12;//定义各个硬件设备和软件的类classMemory{publicbooleancheck(){System.out.println("Memoryself-checking...");//假设返回true表示自检成功returntrue;}}classCPU{publicbooleanrun(){......
  • 4.3软件设计:面对对象的设计
    面对对象设计1、面对对象的架构设计1.1第一步:构造系统的物理模型1.2第二步:设计子系统划分各个子系统的方式定义子系统之间的关系定义子系统的接口1.3第三步:非功能需求设计2、面对对象的用例设计与类设计2.1类2.2类间关系2.3细化用例第一步:定义类的属性第二步:定义......
  • 幼儿早教小程序软件设计与实现毕业设计源码
    博主介绍:✌专注于VUE,小程序,安卓,Java,python,物联网专业,有17年开发经验,长年从事毕业指导,项目实战✌选取一个适合的毕业设计题目很重要。✌关注✌私信我✌具体的问题,我会尽力帮助你。研究的背景:随着科技的发展和教育理念的进步,幼儿教育越来越受到重视。然而,传统的幼儿教育模......
  • 软件设计师:排序算法总结
    一、直接插入排序方式:从第一个数开始,拿两个数比较,把后面一位跟前面的数比较,把较小的数放在前面一位二、希尔排序方式:按“增量序列(步长)”分组比较,组内元素比较交换 假设初始关键字:48   37   64   96   75   12   26   58   54   3,有......
  • 软件设计-Tutorial09
    用桥接模式实现在路上开车这个问题,其中,车可以是car或bus,路可以是水泥路或沥青路。类图:```mermaidclassDiagramclassRoad{<<interface>>+drive()}classCementRoad{+drive()}classAsphaltRoad{+drive()......
  • 软件设计Tutorial08
      实验8:适配器模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解适配器模式的动机,掌握该模式的结构;2、能够利用适配器模式解决实际问题。 [实验任务一]:双向适配器实现一个双向适配器,使得猫可以学狗叫,狗可以学猫抓老鼠。实验要求:1. 画出对应的类图;......
  • 学习高校课程-软件设计模式-责任链模式和命令模式(lec9)
    原文链接ChainofResponsibility:ProblemExample:anonlineorderingsystem示例:在线订购系统–Therequestmustpassaseriesofchecks–Newrequirements:validation,filteringrepeatedfailedrequests,speedingupbyreturningcachedresults,andmore–......
  • 学习高校课程-软件设计模式-享元模式和代理模式(lec8)
    原文链接Flyweight:ProblemEachparticle,suchasabullet,amissileorapieceofshrapnelwasrepresentedbyaseparateobjectcontainingplentyofdata.Atsomepoint,whenthecarnageonaplayer’sscreenreacheditsclimax,newlycreatedparticlesno......
  • 学习高校课程-软件设计模式-组合模式、装饰器模式和外观模式(lec7)
    原文链接Composite:ProblemUsingtheCompositepatternmakessenseonlywhenthecoremodelofyourappcanberepresentedasatree.仅当应用程序的核心模型可以表示为树时,使用复合模式才有意义。Forexample,imaginethatyouhavetwotypesofobjects:Products......
  • 软件设计--实验七
    实验7:单例模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解单例模式的动机,掌握该模式的结构;2、能够利用单列模式解决实际问题。 [实验任务一]:学号的单一仿照课堂的身份证的例子,实现每个同学仅有一个学号这一问题。 类图:```mermaidclassDiagram......