Frage Design



  • private void button1_Click(object sender, EventArgs e)
            {
                if (label1.BackColor == Color.Green) label1.BackColor = Color.Azure;
                else 
                label1.BackColor = Color.Green;
            }
    

    Koppel ich mit dieser Implementierung meine Business Logic an diese Oberflaeche ? Wenn ich das gleiche so implementiere koennte ich eine andere Oberflaeche verwenden ?

    bool var=true;
    
            private void button1_Click(object sender, EventArgs e)
            {
                if (var == true)
                {
                    label1.BackColor = Color.Azure;
                    var = false;
                }
                else
                {
                    label1.BackColor = Color.Green;
                    var = true;
                }
            }
    


  • // ==UserScript==
    // @name           cppplonk
    // @namespace      Salamix
    // @version        1.02
    // @desrciption    Blendet Postings bestimmte Benutzer im C++-Forum aus. 
    // @include        http://www.c-plusplus.net/forum/*
    // ==/UserScript==
    
    (function(){
    
    function xCall(xpath,func){
      var xpathResult=document.evaluate(
        xpath,
        document,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null
      );
      for(var i=0;i<xpathResult.snapshotLength;i++){
        var r=func(xpathResult.snapshotItem(i));
        if(r!=null) return r;
      }
    }
    
    function xDelete(xpath){
      xCall(xpath,
        function(x){
          x.parentNode.removeChild(x);
        }
      );
    }
    
    function main()  {
      //Postings
      xDelete('//tr[td/strong[text()="blurry333"]]');
    
    }
    
    main();
    
    })();
    


  • blurry333 schrieb:

    Koppel ich mit dieser Implementierung meine Business Logic an diese Oberflaeche ? Wenn ich das gleiche so implementiere koennte ich eine andere Oberflaeche verwenden ?

    Wuesste nicht wo da Business Logic ist.
    Die Zweite Variante ist nicht wirklich der Hit.



  • Ich vermute, du willst eher auf so etwas hinaus:

    public class Form1 : Form
    {
        // Benutzeraktion an die Businesslogik weiterleiten.
        private void button1.Click(object sender, EventArgs e)
        {
            myBusinessObject1.ToggleProperty = !myBusinessObject.ToggleProperty;
        }
    
        // Veränderungen in der Businesslogik auf der Oberfläche anzeigen.
        override OnLoad()
        {
            myBusinessObject1.TogglePropertyChanged += MyBusinessObject1_TogglePropertyChanged;
        }
    
        private void MyBusinessObject1_TogglePropertyChanged(object sender, EventArgs e)
        {
            if(myBusinessObject.ToggleProperty)
            {
                button1.BackColor = Color.Green;
            }
            else
            {
                button1.BackColor = Color.Azure;
            }
        }
    }
    
    public class MyBusinessObject
    {
        public bool ToggleProperty
        {
            get { return(_toggleProperty); }
            set {
                _toggleProperty = value;
                if(TogglePropertyChanged != null)
                   TogglePropertyChanged(this, new EventArgs());
            }
        }
    }
    

    Durch Drücken des Buttons (GUI) wird eine Property (BL) verändert. Ein zugehöriger Event (BL) schiebt seinen Event Handler (GUI) an.

    Die Entkopplung besteht darin, dass die Businesslogik nichts von der Oberfläche wissen muss. Der Eventhandler könnte genausogut fehlen. Ebenso könnte der Event auch von anderswo oder von mehreren Stellen im Programm abonniert worden sein.


Anmelden zum Antworten