public class TestFlyweight {
public static void main(String[] args) {
TreeNode treeNode = new TreeNode(4, 5, TreeFactory.getTree("suntree", "good tree"));
TreeNode treeNode2 = new TreeNode(6, 7, TreeFactory.getTree("suntree", "good tree"));
TreeNode treeNod3 = new TreeNode(4, 5, TreeFactory.getTree("suncodetree", "good tree"));
TreeNode treeNode4 = new TreeNode(6, 7, TreeFactory.getTree("suncodetree", "good tree"));
}
}
public class TreeFactory {
private static Map<String,Tree> treeMap=new ConcurrentHashMap<>();
public static Tree getTree(String name,String data){
System.out.println("tree的名字"+name);
if(treeMap.containsKey("xxx")){
return treeMap.get(name);
}
Tree tree=new Tree(name,data);
treeMap.put(name,tree);
return tree;
}
}
@Data
@Builder
@ToString
public class Tree {
private String name;
private String data;
}
@Data
@Builder
@AllArgsConstructor
@ToString
public class TreeNode {
int x;
int y;
Tree tree;
}