I've been optimizing a WinForm form application to show how to lower the module's low coupling through "delegates" and "events."
But before that, we have to understand what a low coupling is.
The simple thing is that two modules, if a class in a module, you need to instantiate a class in another module, and then call the method so that the two modules are tied to a chariot, and if a module disappears suddenly, an error is made, and all we have to do is add the method in a module to a delegate or event. , waiting for other modules to register, and whether the other modules disappear, regardless of the module that owns the delegate or event. Listen, it's still a wrap, example.
/*------------------------------------------------------------------------------------------------------Split Line-------------- ---------------------------------------------------------------------------------------------------------*/
One.. Purpose: To have two forms (ParentForm and ChildForm), each owning a text box, sending a message to another form using one form, and displaying it in a text box.
Two. Specific operation:
1. One of the stupidest ways.
Create a new Winfrom application, add controls, and change the naming.
Show Results:
A parent form directly manipulating a subform's data, which, in the object-oriented view, is extremely stupid. We're going to improve on this, and maybe we'll do it in the subform, provide the method, make the modification, and the benefits can be verified to see if the input is correct.
2. Seemingly good way to change
Add a method to the subform to modify the txt_receive of the subform
Set the form text box as private
To call a method in the parent form code:
This approach is at least object-oriented, but unfortunately, it's still a rookie way of writing,
The disadvantage of this approach is that if I delete the ChildForm, the main form crashes, and if I have many forms associated with the parent form, I want to modify the code a lot. Such a two-form body is coupled, and we want to decouple, that is, no instances or code of other forms can appear in the parent form.
3. Decoupling, using the delegate.
If you want to avoid the error in 2, we should not have other forms (modules) of the object in the parent form.
So if we add the form again, the Click event of our parent form doesn't need to change.
Delegates are not very secure, and we use events, events, and delegates as relationships between private variables and attributes.
4. Use Event
That is, when the button is clicked, the delegate is not invoked directly, but the event is triggered.
Add a Class
Results run successfully.
Finally, the difference between the event and the delegate is emphasized:
1. Event is a special instance of a delegate
2. Events can only be triggered within the current class, but can be other places + =, so secure.
3. No, other methods of use, events and delegates are the same.