作用: 当某个类需要被创建大量相似的对象时,会带来大量的内存开销。享元模式便是用来解决该问题。
通过将对象中相同的、不变的部分分离出来共享,来减少数据冗余,节省内存开销。
角色: Flyweight:享元角色,即对象之间共享的部分。
UnsharedConcreteFlyweight:非享元角色,即对象之间不一样的部分。
示例:五子棋棋子类包含“落子”方法,每颗棋子一样,因此为享元角色;而落的位置每个棋子不同,因此再分出一个非享元角色Point类,表示位置