题目
介绍下享元模式
答案
享元模式(Flyweight Pattern)共享对象,减少内存消耗,提高性能。
适用场景:
- 有大量对象时使用。
- 对象之间差别小,可共享内部状态。
示例:棋子共享
```java
import java.util.HashMap;
import java.util.Map;
// 享元对象
class ChessPiece {
private String color;
public ChessPiece(String color) {
this.color = color;
}
public void display(int x, int y) {
System.out.println(color + " piece at (" + x + "," + y + ")");
}
}
// 工厂
class ChessFactory {
private static Map<String, ChessPiece> map = new HashMap<>();
public static ChessPiece getPiece(String color) {
if (!map.containsKey(color)) {
map.put(color, new ChessPiece(color));
}
return map.get(color);
}
}
// 测试
public class FlyweightTest {
public static void main(String[] args) {
ChessPiece black1 = ChessFactory.getPiece("Black");
ChessPiece black2 = ChessFactory.getPiece("Black");
black1.display(1, 2);
black2.display(2, 3);
System.out.println("Same object? " + (black1 == black2));
}
}
```
