Design Pattern:
Flyweight pattern is primarily used to reduce the number of objects created and to decrease memory footprint and increase performance
模式:享元模式是用来减少对象产生的,内置hashmap,如果有就返回没有就new 有效地支持大量细粒度的对象 和单例模式(一个类一个对象)不一样
和工厂模式很像:但是本质上工厂模式是用来掩饰内部实现细节的,而享元是为了防止共享大量的细粒度对象
故事场景:总决赛开始,勇士要在勇士篮球场和骑士篮球场分别打上几场球 但是又不用每个人都new一个篮球场
篮球场
public class BasketballCourt {
public String place;
public BasketballCourt(String place) {
this.place = place;
}
public String getPlace() {
return place;
}
public void setPlace(String place) {
this.place = place;
}
}
篮球场工厂,用来生产勇士篮球馆,骑士篮球馆
public class CourtFactory {
private static Map<String, BasketballCourt> courtMap = new HashMap<>();
public static BasketballCourt getCourt(String court) {
BasketballCourt court0 = courtMap.get(court);
if (court0 != null) {
return court0;
}
BasketballCourt wCourt = new BasketballCourt(court);
courtMap.put(court, wCourt);
System.out.println(court+"建了一个新篮球场");
return wCourt;
}
}
实验的开始
public class FlyweightDemo {
public static void main(String[] args) {
String warriors = "Warriors";
//杜兰特需要勇士球馆打球
CourtFactory.getCourt(warriors);
//杜兰特需要勇士球馆打球
CourtFactory.getCourt(warriors);
String cavaliers = "Cavaliers";
//杜兰特需要骑士球馆打球
CourtFactory.getCourt(cavaliers);
//杜兰特需要骑士球馆打球
CourtFactory.getCourt(cavaliers);
}
}
结果
