abstract class IgoChessman {
public abstract String getColor();
public void display() {
System.out.println("棋子颜色:" + this.getColor());
}
}
class BlackIgoChessman extends IgoChessman {
public String getColor() {
return "黑色";
}
}
class WhiteIgoChessman extends IgoChessman {
public String getColor() {
return "白色";
}
}
class IgoChessmanFactory {
private static IgoChessmanFactory instance = new IgoChessmanFactory();
private static Hashtable ht;
private IgoChessmanFactory() {
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);
}
}
class Client {
public static void main(String args[]) {
IgoChessman black1, black2, white1, white2;
IgoChessmanFactory factory;
factory = IgoChessmanFactory.getInstance();
black1 = factory.getIgoChessman("b");
black2 = factory.getIgoChessman("b");
System.out.println("判断两颗黑子是否相同:" + (black1 == black2));
white1 = factory.getIgoChessman("w");
white2 = factory.getIgoChessman("w");
System.out.println("判断两颗白子是否相同:" + (white1 == white2));
black1.display();
black2.display();
white1.display();
white2.display();
}
}