1、IShape.java
package com.ssm.cts.pattern.flyweight; public interface IShape { void draw(); }
2、Circle.java
package com.ssm.cts.pattern.flyweight; public class Circle implements IShape { private String color; public Circle(String color) { this.color = color; } @Override public void draw() { System.out.println("显示" + color + "圆圈"); } }
3、ShapeFactory.java
package com.ssm.cts.pattern.flyweight; import java.util.HashMap; public class ShapeFactory { private static final HashMap<String, IShape> circleMap = new HashMap<>(); public static IShape getCircle(String color) { Circle circle = (Circle) circleMap.get(color); if (circle == null) { circle = new Circle(color); circleMap.put(color, circle); System.out.println("创建" + color + "圆圈"); } return circle; } }
4、Demo.java
package com.ssm.cts.pattern.flyweight; public class Demo { private static final String colors[] = { "Red", "Green", "Blue", "White", "Black" }; public static void main(String[] args) { for (int i = 0; i < 10; ++i) { Circle circle = (Circle) ShapeFactory.getCircle(getRandomColor()); circle.draw(); } } private static String getRandomColor() { return colors[(int) (Math.random() * colors.length)]; } }