跨境电商网站平台,网页设计与网站开发pdf,wordpress主题去谷歌字体,网站建设课程大纲简要说明 简要的理解#xff1a;享元模式就是新建一个池(Pool)#xff0c;该池子(Pool)中有新建好的一堆对象#xff0c;当需要使用时#xff0c;从池子(Pool)中直接获取#xff0c;不用重新新建一个对象。通俗的讲就是#xff1a;共享元数据。 比如Java中的String就是使…简要说明 简要的理解享元模式就是新建一个池(Pool)该池子(Pool)中有新建好的一堆对象当需要使用时从池子(Pool)中直接获取不用重新新建一个对象。通俗的讲就是共享元数据。 比如Java中的String就是使用享元模式String的值存储在一个内存池中不用每次分配一个内存存储字符串的值。再比如App客户端中TableView列表中的TableViewCell也是最经典的享元模式一个TableView列表中的Cell是重复利用最大限度的重复利用以此保证整个列表流畅度。 结合组合模式(Composite) 如图中的紫色部分可以作为一个组合进行共享使用即结合了组合模式(Composite)的享元模式。 一、代码实现
1、Java String中的享元模式
/*** description: Java String 中的享元模式* author: flygo* time: 2022/7/21 11:32*/
public class TestString {public static void main(String[] args) {String s1 abc;String s2 abc;String s3 new String(abc);String s4 new String(abc);System.out.println(s1 s2); // trueSystem.out.println(s1 s3); // falseSystem.out.println(s3 s4); // falseSystem.out.println(s3.intern() s1); // trueSystem.out.println(s3.intern() s4.intern()); // true}
}
2、对象池模拟Flyweight享元模式 import java.util.ArrayList;
import java.util.List;
import java.util.UUID;/*** description: 对象池模拟Flyweight享元模式* author: flygo* time: 2022/7/21 11:37*/
public class BulletPool {ListBullet bulletList new ArrayList();{for (int i 0; i 5; i) {bulletList.add(new Bullet());}}public Bullet getBullet() {for (int i 0; i bulletList.size(); i) {Bullet b bulletList.get(i);if (!b.living) {return b;}}return new Bullet();}public static void main(String[] args) {BulletPool bp new BulletPool();for (int i 0; i 10; i) {Bullet bullet bp.getBullet();System.out.println(bullet);}}
}class Bullet {public UUID id UUID.randomUUID();boolean living true;Overridepublic String toString() {return Bullet{ id id };}
}二、源码地址
https://github.com/jxaufang168/Design-Patternshttps://github.com/jxaufang168/Design-Patterns