享元模式: 用于减少创建对象的数量,以减少内存占用和提高性能。用唯一标识码判断,如果在内存中有,则返回这个唯一标识码所标识的对象。
使用场景: 1、系统有大量相似对象。 2、需要缓冲池的场景。
import java.util.HashMap;
import java.util.Map;
public class FlyweightPattern {
private String id;
private String name;
public FlyweightPattern(String id, String name) {
this.id = id;
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
class FlyweightPatternNode {
private int x;
private int y;
private FlyweightPattern flyweightPattern;
public FlyweightPatternNode(int x, int y, FlyweightPattern flyweightPattern) {
this.x = x;
this.y = y;
this.flyweightPattern = flyweightPattern;
}
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 FlyweightPattern getFlyweightPattern() {
return flyweightPattern;
}
public void setFlyweightPattern(FlyweightPattern flyweightPattern) {
this.flyweightPattern = flyweightPattern;
}
}
class FlyweightPatternFactory {
private static Map<String, FlyweightPattern> map = new HashMap<>();
public static FlyweightPattern getFlyweightPattern(String id, String name) {
if (map.containsKey(id)) {
return map.get(id);
}
FlyweightPattern flyweightPattern = new FlyweightPattern(id, name);
map.put(id, flyweightPattern);
return flyweightPattern;
}
}
class test {
public static void main(String[] args) {
FlyweightPattern flyweightPattern = FlyweightPatternFactory.getFlyweightPattern("1", "小明");
FlyweightPatternNode flyweightPatternNode1 = new FlyweightPatternNode(0, 1, flyweightPattern);
FlyweightPatternNode flyweightPatternNode2 = new FlyweightPatternNode(0, 2, flyweightPattern);
}
}