前言
月是一轮明镜,晶莹剔透,代表着一张白纸(啥也不懂)
央是一片海洋,海乃百川,代表着一块海绵(吸纳万物)
泽是一柄利剑,千锤百炼,代表着千百锤炼(输入输出)
月央泽,学习的一种过程,从白纸->吸收各种知识->不断输入输出变成自己的内容
希望大家一起坚持这个过程,也同样希望大家最终都能从零到零,把知识从薄变厚,再由厚变薄!
一、什么是享元模式?
享元模式是一种结构型设计模式,其主要目的是通过共享尽可能多的对象来最小化内存使用和提高性能。它通过将对象分为可共享和不可共享两类来实现这一目标。可共享对象可以在多个上下文中重复使用,而不可共享对象则必须在每个上下文中创建新实例。
二、享元模式的优缺点:
优点:
-
减少对象的数量,节省内存空间和系统资源。
-
提高程序性能,因为减少了对象的创建和销毁次数。
-
可以共享对象状态,增加程序的灵活性和可维护性。
-
可以通过享元工厂来统一管理对象,方便管理和维护。
缺点:
- 对象共享可能导致线程安全问题,需要进行同步处理。
- 对象共享可能会导致代码复杂度增加,需要额外的代码来维护共享池。
- 对象共享可能会影响程序的可读性和可维护性,因为对象的状态被分散到了不同的地方。
三、享元模式的结构:
四、享元模式实战:
1.创建FlyWeight
2.创建具体FlyWeight
3.创建FlyWeightFactory
4.测试:
5.结果:
五.总结:
Java中享元模式的应用场景:
-
字符串常量池:在Java中,字符串常量池就是一种享元模式的应用场景。在字符串常量池中,相同的字符串只会被保存一次,多个字符串可以共享同一个对象。
-
数据库连接池:在Java中,数据库连接池也是一种享元模式的应用场景。连接池中的连接对象可以被多个线程共享,避免了频繁创建和销毁连接对象的开销。
-
图形界面中的图形元素:在图形界面中,图形元素(如按钮、文本框等)可以被多个窗口共享,避免了重复创建相同的元素。
-
享元模式还可以用于优化大量相似对象的创建和销毁过程,例如游戏中的粒子系统。