2009-12-21 2 views
1

Я пишу инженерные приложения на работе в C# .NET. Часто эти приложения имеют сложные механизмы обновления, по крайней мере, я в конечном итоге пишу сложные механизмы обновления.Теория механизма обновления

Может ли кто-нибудь направить меня к некоторым книгам или чему-то, где я могу узнать теорию обновления? Должен ли я тратить свое время на изучение рекурсивных функций? Асинхронные обновления? Двоичные деревья? Я даже на стоянке, чтобы попасть в стадион?

Мне нравится использовать свойства, потому что они кажутся самодостаточными и легкими и чистыми для привязки к WPF и silverlight gui, которые я пишу, и мне нравятся события, потому что кажется, что это уменьшает спагетти, но я не чувствую, что мои теоретические понимание этих вещей очень звучит.

Спасибо за помощь!

Вот пример того, о чем я говорю.

public delegate void ParentChangedEventHandler(object sender, EventArgs e); 

public class Parent 
{ 
    List<Child> Children; 

    private double parentCoefficient; 
    public double ParentCoefficient 
    { 
     get 
     { 
      return parentCoefficient; 
     } 
     set 
     { 
      parentCoefficient = value; 
      ParentChanged(this, EventArgs.Empty); 
     } 
    } 

    public double Chaos 
    { 
     get 
     { 
      double chaos = 0; 
      foreach(Child child in Children) 
      { 
       chaos += child.ChildChaos; 
      } 
      return chaos; 
     } 
    } 

    public event ParentChangedEventHandler ParentChanged; 

    public Parent() 
    { 
     ParentCoefficient = 42; 
     Children = new List<Child>(); 
     for (int i = 0; i < 12; i++) 
     { 
      Children.Add(new Child(this)); 
     }    
    } 
} 

public class Child 
{ 
    public double ChildChaos; 
    private Parent parent; 

    public Child(Parent theParent) 
    { 
     parent = theParent; 
     parent.ParentChanged += new ParentChangedEventHandler(parent_Changed); 
    } 

    private void parent_Changed(object sender, EventArgs e) 
    { 
     ChildChaos = 0.5 * parent.ParentCoefficient; 
    } 
} 

Таким образом, вы заметите, что ребенок нуждается в обновлении, когда класс Parent изменяется, а затем родители должны обновлять, когда ребенок меняется. Если я обновляю родительский элемент, зарегистрировав его на событие в дочернем элементе, он будет обновляться один раз для каждого ребенка, когда он должен обновляться только после обновления всех детей.

Я уверен, что некоторые из вас могут придумать решения этой конкретной проблемы, но имейте в виду, что это упрощенный пример. Реальные гораздо сложнее.

Я действительно мог бы использовать какую-то книгу, которая охватывает фундаментальную теорию такого рода вещей.

+2

Я не думаю, что кто-нибудь узнает, что вы подразумеваете под «механизмами обновления». Что обновить? –

+1

@ Джонатон: Согласен. Сначала я подумал, что он говорит об обновлении приложения с версии X до версии Y. Я не знаю, какие из b-деревьев имеют к этому отношение. – jcollum

+0

Это моя проблема, я даже не знаю, какие слова использовать. Я напишу простой пример того, что я говорю, и добавить его. – Eric

ответ

1

Мне кажется, что вы говорите о сложных зависимостях состояний, которые могут быть эффективно смоделированы механизмом правил. Современный механизм правил в основном принимает набор входных данных, применяет к нему набор правил, некоторые из которых действуют снова на результат предыдущих примененных правил и генерируют вывод, который соответствует этим правилам.

В вашем случае у вас есть правило, которое принудительно накапливает «хаос» при изменении родительского объекта. Например, это может привести к отмене какого-либо другого правила, например, когда «хаос» достигает порога или чего-то еще.

Сложные зависимости управляются красиво, так как правила декларируемы. Хорошим механизмом правил, который я использовал экспериментально, является DROOLS.Net. Inrule также делает коммерческую: http://www.inrule.com/

+0

Итак, я сделал несколько поисковых запросов, и похоже, что все, что я должен знать, это государственные машины? это правильно? – Eric

+0

Государственные машины - основная теория, да. Тем не менее, это очень, очень широкая теория и имеет множество специфических областей дисциплины. Я бы начал с изучения двигателей правил, так как сам по себе также очень широк. – codekaizen

Смежные вопросы