Теория гласит о необходимости соблюдения принципа слабой
связанности компонентов. Посредник - один из шаблонов решающий
эту задачу. Текстовые поля t1 и t2 ничего не знают друг о друге,
но обладают определенным поведением (точнее им обладает посредник), благодаря использования посредника.
Объекты посылают сообщения не друг другу, а посреднику(actionPerformed).
А посредник уже передает сообщения так как нужно другим объектам.
Таким образом достигается инкапсуляция, один из китов ООП, -
код пользовательского интерфейса остается минимальным и чистым,
вся логика сосредоточилась в посреднике. Кто программировал настольные приложения, тот знает как сложно избежать замусоривания кода форм,
следствием этого является зачастую еще и дублирование кода!!! Посредник
в этом случае может нам помочь.
связанности компонентов. Посредник - один из шаблонов решающий
эту задачу. Текстовые поля t1 и t2 ничего не знают друг о друге,
но обладают определенным поведением (точнее им обладает посредник), благодаря использования посредника.
Объекты посылают сообщения не друг другу, а посреднику(actionPerformed).
А посредник уже передает сообщения так как нужно другим объектам.
Таким образом достигается инкапсуляция, один из китов ООП, -
код пользовательского интерфейса остается минимальным и чистым,
вся логика сосредоточилась в посреднике. Кто программировал настольные приложения, тот знает как сложно избежать замусоривания кода форм,
следствием этого является зачастую еще и дублирование кода!!! Посредник
в этом случае может нам помочь.
import groovy.swing.SwingBuilder import javax.swing.* import java.awt.event.* import java.awt.* def ui=new UI() ui.showUI() class UI { Mediator m; def frame; def createUI() { frame = new SwingBuilder().frame(title:"Patterns", defaultCloseOperation:JFrame.EXIT_ON_CLOSE, size:[400,500], show:true) { tabbedPane{ panel(title:"Mediator") { def t1 = textField(columns:20); def t2 = textField(columns:20); new Mediator(t1,t2) } } } } def showUI() { if(!frame) createUI();
else frame.show(); } } class Mediator { JTextField t1 JTextField t2 Mediator( JTextField t1,JTextField t2) { this.t1 = t1 this.t2 = t2 createListener() } def createListener() { t1.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { t2.text=t1.text.toUpperCase() } } ) t2.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { t1.text=t2.text.toUpperCase() } } ) } }
Комментарии
Отправить комментарий