主要用于减少创建对
/**
* 外部状态
*/
class Coordinate {
private int x, y;
public Coordinate(int x, int y) {
this.x = x;
this.y = y;
}
@Override
public String toString() {
return "Coordinate{" +
"x=" + x +
", 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;
}
}
/**
* 享元类
*/
interface ChessFlyWeight {
void setColor(String color);
String getColor();
void display(Coordinate coordinate);
}
class ConcreteChess implements ChessFlyWeight {
private String color;
public ConcreteChess(String color) {
this.color = color;
}
@Override
public void setColor(String color) {
this.color = color;
}
@Override
public String getColor() {
return color;
}
@Override
public void display(Coordinate coordinate) {
System.out.println(color + "-->" + coordinate.toString());
}
}
class ChessFlyWeightFactory {
private static Map<String, ChessFlyWeight> map = new HashMap<>();
public static ChessFlyWeight getChess(String color) {
if (map.containsKey(color)) {
return map.get(color);
} else {
ChessFlyWeight weight = new ConcreteChess(color);
map.put(color, weight);
return weight;
}
}
}
象的数量,以减少内存占用和提高性能