2009-12-21 19 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