今日总结

享元模式

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

 

 

class Coordinates {

private int x;

private int y;

public Coordinates(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;

}

}

 

abstract class IgoChessman {

public abstract String getColor();

public void locate(Coordinates coord){

System.out.println("棋子颜色:"+this.getColor()+",棋子位置:"+coord.getX()+","+coord.getY());

}

}

 

class BlackIgoChessman extends IgoChessman{

@Override

public String getColor() {

// TODO Auto-generated method stub

return "黑色";

}

}

 

class WhiteIgoChessman extends IgoChessman{

@Override

public String getColor() {

// TODO Auto-generated method stub

return "白色";

}

}

 

public class IgoChessmanFactory {

private static IgoChessmanFactory instance = new IgoChessmanFactory();

private static Hashtable ht;

public IgoChessmanFactory() {

// TODO Auto-generated constructor stub

ht = new Hashtable();

IgoChessman black,white;

black = new BlackIgoChessman();

ht.put("b", black);

white = new WhiteIgoChessman();

ht.put("w", white);

}

public static IgoChessmanFactory getInstance(){

return instance;

}

public static IgoChessman getIgoChessman(String color){

return (IgoChessman)ht.get(color);

}

}

 

public class Client {

public static void main(String[] args) {

IgoChessman black1,black2,black3,white1,white2;

IgoChessmanFactory factory;

factory = IgoChessmanFactory.getInstance();

black1 = factory.getIgoChessman("b");

black2 = factory.getIgoChessman("b");

black3 = factory.getIgoChessman("b");

System.out.println("判断两颗黑棋是否相同:"+(black1==black2));

white1 = factory.getIgoChessman("w");

white2 = factory.getIgoChessman("w");

System.out.println("判断两颗白棋是否相同:"+(white1==white2));

black1.locate(new Coordinates(1, 2));

black2.locate(new Coordinates(3, 4));

black3.locate(new Coordinates(1, 3));

white1.locate(new Coordinates(2, 5));

white2.locate(new Coordinates(2, 4));

}

}

 

posted @ 2021-10-07 15:53  一条快乐的小鲸鱼  阅读(57)  评论(0编辑  收藏  举报