重复利用对象,共享元对象
package org.example.ms.flyweight;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
public class FlyA {
List flyBList = new ArrayList<>();
{
for (int i = 0; i < 5; i++) {
flyBList.add(new FlyB());
}
}
public FlyB getFlyB() {
for (FlyB fb : flyBList) {
if (!fb.isLiving) {
return fb;
}
}
return new FlyB();
}
}
class FlyB {
public UUID id = UUID.randomUUID();
boolean isLiving = false;
@Override
public String toString() {
return "flyB{" +
"id=" + id +
'}';
}
}
package org.example.ms.flyweight;
public class FlyweightTtest {
public static void main(String[] args) {
FlyA flyA = new FlyA();
for (int i = 0; i < 10; i++) {
FlyB ff = flyA.getFlyB();
if (i % 2 == 0) {
ff.isLiving = true;
}
System.out.println(ff);
}
}
}



