设计模式-享元模式
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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix