设计模式-享元模式


public class TreeNode {
private Integer x;
private Integer y;
private Tree tree;

public TreeNode(Integer x, Integer y, Tree tree) {
this.x = x;
this.y = y;
this.tree = tree;
}

public static void main(String[] args) {
TreeNode treeNode1 = new TreeNode(10, 20, TreeFactory.getTree("name1", "data1"));
TreeNode treeNode2 = new TreeNode(11, 21, TreeFactory.getTree("name1", "data1"));
TreeNode treeNode3 = new TreeNode(12, 22, TreeFactory.getTree("name2", "data1"));
}
}

@Getter
public class Tree {
private final String name;
private final String data;
public Tree(String name, String data) {
System.out.println("name = " + name + ", data = " + data);
this.name = name;
this.data= data;
}
}

public class TreeFactory {
private static Map<String, Tree> map = new ConcurrentHashMap<>();
public static final Tree getTree(String name, String data) {
if (map.containsKey(name)) {
return map.get(name);
}
Tree tree = new Tree(name, data);
map.put(name, tree);
return tree;
}
}

打印结果:

name = name1, data = data1
name = name2, data = data1

posted @   剑阁丶神灯  阅读(25)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示