设计模式-享元模式
一、用到的类
一个接口
一个接口实现类
一个享元工厂:里面有一个用于存储实现类的map,key为我们随机指定的(我们自己是知道的,以后会用这个key去获取),还有一个获取对象方法,先去map中找,找不到就创建并塞入map,找到了就返回
二、实现代码
接口代码
public interface Shape {void draw();
}
接口实现代码
public class Circle implements Shape{private String color;public Circle(String color) {this.color = color;}@Overridepublic void draw() {System.out.println("画一个圆形:"+ color);}
}
享元工厂
public class FlyweighFactory {private static final Map<String,Shape> circleMap = new HashMap<>();public Shape getCircle(String color){Shape circle = circleMap.get(color);if(circle == null){circle = new Circle(color);circleMap.put(color, circle);System.out.println("创建了" + color + "的圆形");}return circle;}
}
调用类
@SpringBootApplication
public class FlyweighApplication {public static void main(String[] args) {FlyweighFactory flyweighFactory = new FlyweighFactory();Shape circle = flyweighFactory.getCircle("red");circle.draw();Shape circle1 = flyweighFactory.getCircle("yellow");circle1.draw();Shape circle2 = flyweighFactory.getCircle("blue");circle2.draw();}
}
三、总结
享元模式的作用就是创建一个工厂,然后给要创建的对象起个名字,我们想要的时候就直接去工厂获取,无需再重新创建一个。