软件设计师——初学java(1)

2021下半年案例6

阅读下列说明和Java代码,将应填入(n)处的字句写在题纸的对应栏内。

【说明】享元(flyweight)模式主要用于减少创建对象的数量,以降低内存占用,提高性能。现要开发一个网络围棋程序,允许多个玩家联机下棋。由于只有一台服务器,为节省内存空间,采用享元模式实现该程序,得到如图6-1所示的类图。

a29bc22821494a95940643c924abc91f.png

import java.util.*;
//棋子颜色
//Java 枚举是一个特殊的类,一般表示一组常量
enum PieceColor { BLACK, WHITE}
//棋子位置
class PiecePos{
	private int x;
	private int y;
	public PiecePos(int a, int b){x = a; y = b;}
	public int getX() { return x; }
	public int getY() { return y; }
}
//棋子定义
abstract class Piece {
	//颜色
	protected PieceColor m_color;
	//位置
	protected Piecemopos m_pos;
	public Piece(PieceColor color, PiecePos pos) {m_color=color, m_pos=pos;}
	//(1);
	public abstract void draw();
}
class BlackPiece extends Piece {
	public BlackPiece(PieceColor color, PiecePos pos){ super(color,pos);}
	public void draw(){
		System.out.println("draw a black piece");
	}
}
class WhitePiece extends Piece {
	public WhitePiece(PieceColor color, PiecePos pos) { super(color, pos); }
	public void draw(){
		System.out.println("draw a white piece");
	}
}
//棋盘上已有的棋子
class PieceBoard{

	//private static final ArrayList<(2)>m_arrayPiece = new ArrayList
	//ArrayList棋盘
	private static final ArrayList<Piece>m_arrayPiece = new ArrayList<>();
	//黑方名称
	private String m_blackName;
	//白方名称
	private String m_whiteName;

	public PieceBoard(String black, String white) {
		m_blackName = black; 
		m_whiteName = white;
	}


	//一步棋,在棋盘上放一颗棋子
	public void SetPiece(PieceColor color, PiecePos pos) {
		//(3)piece = null;
		Piece piece = null;
		//放黑子
		if(color ==PieceColor.BLACK) {
			//获取一颗黑子
			piece=new BlackPiece(color, pos);

			System.out.println(m_blackName+"在位置("+pos.getX()+","+pos.getY()+ ")");
			//(4);
			piece.draw();
		}else{//放白子
			piece=new WhitePiece(color,pos);
			//获取一颗白子
			System.out.println(m_whiteName+"在位置("+pos.getX()+","+pos.getY()+")");
			//(5);
			piece.draw();
		}
		m_arrayPiece.add(piece);
	}
}

分析

e4276f4364f0488babd501517f16f126.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值