2009-12-21 77 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; 
    } 
} 

所以,你會注意到,當父類改變時,子需要更新,然後當子更改時父需要更新。如果我通過將父母註冊到孩子中的某個事件來更新父母,它將爲每個孩子更新一次,但只有在所有孩子更新後才更新。

我相信你們中的一些人可以想出解決這個問題的方法,但請記住這是一個簡單的例子。真正的更復雜。

我真的可以使用一些涵蓋這類事情基本理論的書。

+2

我不認爲有人會知道你的意思是「更新機制」。更新什麼? – 2009-12-21 21:41:10

+1

@Jonathon:同意。起初,我以爲他在討論將應用程序從版本X更新到版本Y.我不知道哪些B樹與此有關。 – jcollum 2009-12-21 22:00:29

+0

這是我的問題,我甚至不知道要用什麼詞。我會寫一個我正在談論的並添加它的簡單例子。 – Eric 2009-12-22 15:35:33

回答

1

在我看來,你在談論複雜的狀態依賴關係,它可以通過規則引擎高效建模。一個現代規則引擎基本上接受一組輸入,對其應用一組規則,其中一些規則再次對先前應用規則的輸出進行操作,並生成符合這些規則的輸出。

就你而言,你會有一條規則,在父實體更改時強制實現「混沌」的累積。例如,這可能會引發一些其他規則,例如,當「混亂」達到閾值或任何其他規則時。

複雜的依賴關係很好地管理,因爲規則是declaritive。我已經實驗使用的一個很好的規則引擎是DROOLS.Net。 Inrule也製作了一個商業版本:http://www.inrule.com/

+0

因此,我做了一些Google搜索,它看起來像我應該學習的首要事情是狀態機?是對的嗎? – Eric 2009-12-22 17:37:36

+0

狀態機是基本理論,是的。然而,這是一個非常非常廣泛的理論,並且有許多特定的紀律領域。我首先看看規則引擎,因爲它本身也非常廣泛。 – codekaizen 2009-12-22 17:54:00