通过尽量共享实例来避免new出实例。
示例
将许多普通字符组合成为“大型字符”。
类图
BigChar类
1 | import java.io.BufferedReader; |
BigCharFactory类
1 | import java.util.HashMap; |
BigString类
1 | public class BigString { |
Main类
1 | public class Main { |
运行结果
1 | ......##........ |
登场角色
Flyweight(轻量级)
按照通常方式编写程序会导致程序变重,所以如果能够共享实例会比较好,而Flyweight角色表示的就是那些实例会被共享的类。在示例程序中,由BigChar类扮演此角色。
FlyweightFactory(轻量级工厂)
FlyweightFactory角色是生成Flyweight角色的工厂。在工厂中生成Flyweight角色可以实现共享实例。在示例程序中,由BigCharFactory类扮演此角色。
Client(请求者)
Client角色使用FlyweightFactory角色来生成Flyweight角色。在示例程序中,由BigString类扮演此角色。