К основному контенту

Посредник

Теория гласит о необходимости соблюдения принципа слабой
связанности компонентов. Посредник - один из шаблонов решающий
эту задачу. Текстовые поля 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()
   }
   } )
 }
}

Комментарии

Популярные сообщения из этого блога

Кирилица в Arch Linux

После вчерашних обновлений в консоли Arch Linux при выборе русской локали вместо букв печатаются белые квадратики. Очевидно, что по какой-то причине не загружается прописанный в rc.conf шрифт. Временное лекарство от этого: выполнить команду setfont cyr-sun16 . Еще у меня в момент начальной загрузки появляется рябь на экране как от сильных электромагнитных помех в ЭЛТ, хотя у меня ЖК. Может быть это как-то связано.

Сортировка массивов в groovy

Любой массив в java и groovy можно отсортировать статическим методом: Arrays.sort(c); причем это будет очень быстро сто тысяч элементов типа int сортируются за 1 секунду на celeron M 1,8 Mg. Если это массив объектов можно использовать перегруженный метод Arrays.sort(c,comporator);

Arch Linux - руссификация консоли

Вчера, придя с работы, как всегда затеял InstallFest. Уже практически не задумываясь установил свежий арч. И тут заметил что в tty вместо русского - квадратики. Под утро нашел таки сообщение на форме, что в этом виноваты дрова от видео. Там правда речь шла о нвидиа, а у меня ати. Буду пробовать. И еще в lxterminal обратил внимание что сообщения на русском, а то что я вводил на русском потом возвращается системой в виде юникод-символов. Вот такие дела. UPDATE: драйвер не причем. переустановил в консоли(до установки X) по прежнему квадратики вместо букв. неужели придется переключатся на инглиш? Заметил что initscripts скачался c какого-то зеркала не с яндекса. возможно причина в нем.