
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)];
}
}