Flyweigth 享元模式

Flyweigth 享元模式

Flyweigth 享元模式 - 图1
数据库连接池、线程池、字符串常量池(String)都是享元模式。从pool取对象而不是一直new。

  1. interface Flyweigths{
  2. void print();
  3. }
  4. class FlyweigthPart implements Flyweigths{
  5. String str;
  6. public FlyweigthPart(String str) {
  7. this.str = str;
  8. }
  9. @Override
  10. public void print() {
  11. System.out.println("str"+str);
  12. }
  13. }
  14. class FlyweigthsPool{
  15. ArrayList<Flyweigths> flyweigthsList = new ArrayList<>();
  16. public FlyweigthsPool add(Flyweigths flyweigths){
  17. flyweigthsList.add(flyweigths);
  18. return this;
  19. }
  20. public Flyweigths get(String a){
  21. for(Flyweigths flyweigths:flyweigthsList){
  22. if(((FlyweigthPart)flyweigths).str.equals(a)){
  23. return flyweigths;
  24. }
  25. }
  26. return new FlyweigthPart(a);
  27. }
  28. }