下面来个实例,大家应该就明白了。
package flyweight;
public interface Flyweight {
void operate();
}
package flyweight;
public class FlyweightA implements Flyweight {
@Override
public void operate() {
// TODO Auto-generated method stub
System.out.println("操作---A");
}
}
package flyweight;
public class FlyweightB implements Flyweight {
@Override
public void operate() {
// TODO Auto-generated method stub
System.out.println("操作---B");
}
}
package flyweight;
public class UnsharedFlyweight implements Flyweight {
@Override
public void operate() {
// TODO Auto-generated method stub
System.out.println("非共享类操作");
}
}
package flyweight;
import java.util.HashMap;
import java.util.Map;
public class FlyweightFactory {
private Map<String, Flyweight> map=new HashMap<>();
public FlyweightFactory() {
map.put("A", new FlyweightA());
map.put("B", new FlyweightB());
}
public Flyweight getFlyweight(String key) {
return map.get(key);
}
}
package flyweight;
public class Client {
public static void main(String[] args) {
// TODO Auto-generated method stub
FlyweightFactory flyweightFactory=new FlyweightFactory();
Flyweight flyweightA = flyweightFactory.getFlyweight("A");
Flyweight flyweightB = flyweightFactory.getFlyweight("B");
Flyweight unsharedFlyweight=new UnsharedFlyweight();
flyweightA.operate();
flyweightB.operate();
unsharedFlyweight.operate();
}
}
在实际应用中,数据库连接池,线程池都有应用享元模式。