大三打卡(10.29)

实验13:享元模式

本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:

1、理解享元模式的动机,掌握该模式的结构;

2、能够利用享元模式解决实际问题。

 
   

 


[实验任务一]:围棋

设计一个围棋软件,在系统中只存在一个白棋对象和一个黑棋对象,但是它们可以在棋盘的不同位置显示多次。

实验要求:

1.  提交类图;

 

2.  提交源代码;

package RJSJ.test13;

 

public class BlackChess extends Chess{

 

    @Override

    public String getColor() {

        return "黑";

    }

}

package RJSJ.test13;

 

public abstract  class Chess {

    public abstract String getColor();

    public void locate(Coordinate co) {

        System.out.println(this.getColor()+"棋的位置:"+co.getX()+","+co.getY());

    }

}

package RJSJ.test13;

 

 

import java.util.Hashtable;

 

public class ChessFactory {

    private static ChessFactory instance = new ChessFactory();

    private static Hashtable ht;

 

    public ChessFactory() {

        ht = new Hashtable();

        Chess black, white;

        black = new BlackChess();

        ht.put("b", black);

        white = new WhiteChess();

        ht.put("w", white);

    }

 

    public static ChessFactory getInstance() {

        return instance;

    }

 

    public static Chess getChess(String color) {

        return (Chess) ht.get(color);

    }

}

    package RJSJ.test13;

 

public class Coordinate {

    private int x;

    private int y;

 

    public Coordinate(int x, int y) {

        // TODO Auto-generated constructor stub

        this.x = x;

        this.y = y;

    }

 

    public int getX() {

        return x;

    }

 

    public void setX(int x) {

        this.x = x;

    }

 

    public int getY() {

        return y;

    }

 

    public void setY(int y) {

        this.y = y;

    }

}

package RJSJ.test13;

 

public class Main {

    public static void main(String[] args) {

        Chess black1,black2,black3,white1,white2;

 

        black1 = ChessFactory.getChess("b");

        black2 = ChessFactory.getChess("b");

        black3 = ChessFactory.getChess("b");

        white1 = ChessFactory.getChess("w");

        white2 = ChessFactory.getChess("w");

        black1.locate(new Coordinate(1, 3));

        black2.locate(new Coordinate(-2, 5));

        black3.locate(new Coordinate(5, 4));

        white1.locate(new Coordinate(-4, 6));

        white2.locate(new Coordinate(3, 3));

    }

}

package RJSJ.test13;

 

public class WhiteChess extends Chess{

    @Override

    public String getColor() {

        return "白";

    }

}

posted @   夏季彼岸德  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示