设计模式-享元模式

发布于:2025-07-05 ⋅ 阅读:(20) ⋅ 点赞:(0)

一、用到的类

一个接口
一个接口实现类
一个享元工厂:里面有一个用于存储实现类的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;
    }
    @Override
    public 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();
    }
}

三、总结

享元模式的作用就是创建一个工厂,然后给要创建的对象起个名字,我们想要的时候就直接去工厂获取,无需再重新创建一个。