享元模式,指数据共享
public class FlyWeight {
public static void main(String[] args) {
TreeNode treeNode = new TreeNode(3, 4, TreeFactory.getTree("a"));
System.out.println(treeNode);
}
}
class TreeNode {
private int x;
private int y;
private Tree tree;
public TreeNode(int x, int y, Tree tree) {
this.x = x;
this.y = y;
this.tree = tree;
}
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;
}
public Tree getTree() {
return tree;
}
public void setTree(Tree tree) {
this.tree = tree;
}
@Override
public String toString() {
return "TreeNode{" +
"x=" + x +
", y=" + y +
", tree=" + tree +
'}';
}
}
class TreeFactory {
private static Map<String, Tree> map = new ConcurrentHashMap<>();
public static Tree getTree(String name) {
if (map.containsKey(name)) {
return map.get(name);
}
Tree tree = new Tree(name);
map.put(name, tree);
return tree;
}
}
class Tree {
private final String name;
public Tree(String name) {
this.name = name;
}
public String getName() {
return name;
}
@Override
public String toString() {
return "Tree{" +
"name='" + name + '\'' +
'}';
}
}