1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| @Slf4j public abstract class Bird implements Animal { @Override public void run() { log.debug(“抽象鸟类—“); } }
@Slf4j @Getter public class Penguin extends Bird { private String name; @Setter @Getter private String color;
public Penguin(String name) { this.name = name; }
@Override public void run() { log.debug("企鹅-- " + name + " " + color); } }
public class FlyweightFactory {
private static final HashMap<String, Bird> pool = new HashMap();
public static Bird getInstance(String name) { Bird bird = null; if (pool.containsKey(name)) { bird = pool.get(name); } else { bird = new Penguin(name); ((Penguin) bird).setColor("黑色"); pool.put(name, bird); } return bird; }
public static int size() { return pool.size(); } }
@Slf4j public class Client { public static void main(String[] args) { Bird white = FlyweightFactory.getInstance(“penguin”); ((Penguin) white).setColor("白色"); Bird orange = FlyweightFactory.getInstance("penguin"); ((Penguin) orange).setColor("橘色"); Bird king = FlyweightFactory.getInstance("king"); log.debug("size: " + FlyweightFactory.size()); } }
|