Как это называется (код внутри)
От: andyag  
Дата: 13.06.12 17:40
Оценка:
Пишу сейчас вот такой вот велосипед:
final Readable<String> firstName = new Property<String>();
final Readable<String> lastName = new Property<String>();
Readable<String> fullName = new ComputedProperty<String>(firstName, lastName) {
  @Override
  public String compute() {
    return String.format("%s %s", firstName.get(), lastName.get());
  }
};
...
firstName.set("Bill");
assertEquals("Bill null", fullName.get());

lastName.set("Gates");
assertEquals("Bill Gates", fullName.get());

Основная идея в том, что на каждое свойство можно подписаться и реагировать когда оно изменяется. Также пишу аналогичные велосипеды для коллекций:
ObservableList<Model> models = ...;
ObservableList<ViewModel> viewModels = new ConverterObservableList<Model, ViewModel>(models, modelToViewModelConverter);

models.add(new Model(....)); // кладём сюда
ViewModel viewModel = viewModels.get(0); // достаём отсюда

На коллекции тоже можно подписываться и мониторить их.
Подскажите, пожалуйста, какие-нибудь ключевые слова по поводу этого подхода — почитать, посмотреть готовые решения.
Re: Как это называется (код внутри)
От: Wolverrum Ниоткуда  
Дата: 13.06.12 18:52
Оценка:
AOP ?
Re: Как это называется (код внутри)
От: Gremlin2 http://www.fb2library.net/
Дата: 13.06.12 20:20
Оценка:
Здравствуйте, andyag, Вы писали:

A>Пишу сейчас вот такой вот велосипед:

  Скрытый текст
A>
A>final Readable<String> firstName = new Property<String>();
A>final Readable<String> lastName = new Property<String>();
A>Readable<String> fullName = new ComputedProperty<String>(firstName, lastName) {
A>  @Override
A>  public String compute() {
A>    return String.format("%s %s", firstName.get(), lastName.get());
A>  }
A>};
A>...
A>firstName.set("Bill");
A>assertEquals("Bill null", fullName.get());

A>lastName.set("Gates");
A>assertEquals("Bill Gates", fullName.get());
A>

A>Основная идея в том, что на каждое свойство можно подписаться и реагировать когда оно изменяется. Также пишу аналогичные велосипеды для коллекций:
A>
A>ObservableList<Model> models = ...;
A>ObservableList<ViewModel> viewModels = new ConverterObservableList<Model, ViewModel>(models, modelToViewModelConverter);

A>models.add(new Model(....)); // кладём сюда
A>ViewModel viewModel = viewModels.get(0); // достаём отсюда
A>

A>На коллекции тоже можно подписываться и мониторить их.
A>Подскажите, пожалуйста, какие-нибудь ключевые слова по поводу этого подхода — почитать, посмотреть готовые решения.

PropertyChangeSupport? и дальше в java.beans
Re: Как это называется (код внутри)
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.06.12 22:01
Оценка: 5 (3) +1
Здравствуйте, andyag, Вы писали:

A>На коллекции тоже можно подписываться и мониторить их.

A>Подскажите, пожалуйста, какие-нибудь ключевые слова по поводу этого подхода — почитать, посмотреть готовые решения.

Вот так
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Как это называется (код внутри)
От: sdf
Дата: 13.06.12 22:06
Оценка:
Здравствуйте, andyag, Вы писали:

A>Подскажите, пожалуйста, какие-нибудь ключевые слова по поводу этого подхода — почитать, посмотреть готовые решения.


http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged.aspx
Re: Dataflow
От: sdf
Дата: 13.06.12 22:13
Оценка: 2 (1)
http://en.wikipedia.org/wiki/Dataflow_programming
Re[2]: Как это называется (код внутри)
От: andyag  
Дата: 14.06.12 04:49
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, andyag, Вы писали:


A>>На коллекции тоже можно подписываться и мониторить их.

A>>Подскажите, пожалуйста, какие-нибудь ключевые слова по поводу этого подхода — почитать, посмотреть готовые решения.

VD>Вот так


Во, спасибо большое
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.