Паттерн: Приспособленец (Flyweight)
Исходник: Client.java, язык: java [code #478, hits: 5727]
автор: this [добавлен: 01.09.2007]
  1. package flyweight;
  2.  
  3. public class Client {
  4.  
  5. public static void main(String[] args) {
  6. TagFactory factory = new TagFactory();
  7. System.out.println(new Client().CreateBodyLayout(factory));
  8. }
  9.  
  10. public String CreateBodyLayout(TagFactory factory) {
  11. TagContext context = new TagContext();
  12. CssStyle styles = new CssStyle();
  13. String res = "";
  14.  
  15. // Приветствие
  16. PTag p = factory.GetPTag();
  17. styles.AddStyle("text-align", "center");
  18. styles.AddStyle("font-size", "12px");
  19. context.setStyle(styles);
  20. res += p.Output("Welcome to out site!", context);
  21.  
  22. // Картинка логотипа
  23. ImgTag img = factory.GetImgTag();
  24. styles.Clear();
  25. styles.AddStyle("text-align", "center");
  26. context.setStyle(styles);
  27. res += img.Output("http://company.com/images/logo.gif", context);
  28.  
  29. // Ссылка на страницу контактов
  30. ATag a = factory.GetATag();
  31. styles.Clear();
  32. styles.AddStyle("font-size", "10px");
  33. styles.AddStyle("color", "green");
  34. context.setStyle(styles);
  35. String link = a.Output("http://company.com/contacts/", "click here", context);
  36.  
  37. // Информация о странице контактов
  38. DivTag div = factory.GetDivTag();
  39. styles.Clear();
  40. styles.AddStyle("text-align", "left");
  41. context.setStyle(styles);
  42. res += div.Output("You may visit our contacts page: " + link + ".", context);
  43.  
  44. // Заключительный абзац текста, второй тег <P>
  45. // Обратите внимание, что при этом не инстанцируется
  46. // новый объект PTag-а - будет использован предущий,
  47. // ранее инстанцированный
  48. PTag p2 = factory.GetPTag();
  49. styles.Clear();
  50. styles.AddStyle("text-align", "left");
  51. context.setStyle(styles);
  52. res += p2.Output("We hope, you will enjoy our site! ;)", context);
  53.  
  54. return res;
  55. }
  56.  
  57. }
Сущность Client

Клиент, использующий функционал фабрики-тегов в совокупности с внешним контекстом для определения конечного html-содержимного страницы.
Тестировалось на: java 1.5.0_04

+добавить реализацию