Entwerfen in C # mit den Augen eines Neulings -NotePad ++ # 6

Hallo allerseits, mein Name ist Arkady, ich bin Student an der Higher School of Economics, und in diesem Artikel werden wir ĂŒber die PeerReview # 6 NotePad ++ - Aufgabe sprechen, nĂ€mlich ĂŒber Architekturen, die fĂŒr diese Aufgabe geeignet sind, und einige Muster.





Die Aufgabe

In dieser Aufgabe besteht die Hauptaufgabe darin, eine GUI-Anwendung zu implementieren. Ich schlage vor, nicht weit vom Thema abzuweichen und sofort zu prĂŒfen, was Architektur ist und wie sie uns in diesem Fall helfen kann.





Die Informationen aus diesem Beitrag decken nicht alle vorhandenen Architekturen und Muster ab, sind jedoch fĂŒr die Implementierung von Aufgabe 6 ausreichend





Anwendungsarchitekturen

Mit Architektur meinen wir ein architektonisches Entwurfsmuster, das die gesamte Anwendung oder einen Teil davon abdeckt. Dieser Teil wird oft als Modul bezeichnet. Die Anwendung wird aus diesen Modulen erstellt. Module sind in diesem Fall keine  C #  -Module, sondern Architekturmodule. Dies kann beispielsweise ein einzelner Anwendungsbildschirm oder mehrere verwandte Bildschirme sein.





. -, , . -, - , . , . . .





, ,





1. Apple MVC

, – MVC. , . Apple MVC,   Classic MVC





Apple MVC-Entwurfsmuster
Apple MVC

, – . . .





  • M – Model. , , . UI (user interface). , . ,





  • V – View. – . , . – , Controller. #- Form . .





  • C – Controller. . , View, , . .. , , .





. , . , TabBarController . .





MVC – .  ( ).  MVC Apple. ViewController View. - . , . 





ViewController . , View. . «Massive View Controller»





, – . - , ViewController, .





2. MVP

MVC MVP. ViewController – , - , View, Presenter.





MVP-Entwurfsmuster
MVP

MVC Apple. , , , ViewController Presenter.





, , MVC, . Presenter , , . , , .





3. MVVM

MVVM MVP. , ViewModel. . , . MVP, . , data binding ( ). , . .. , ViewModel, .





MVVM-Entwurfsmuster
MVVM

MVVM MVP . ,





, . MVVM , .. View ViewModel. , .






. MVVM, .





. – .





– . , . , .





, . :





  1. (Singleton)





  2. Target-Action





  3. (Observer)





  4. (Command)





, .. , , .





Swift, .. - , - **** C#, **** *** *** ***** *** **** , . .





1. (Singleton)

- . ,     , .





, - .





. , .





– GPS-. , . GPS, . , , . -. LocationManager, GPS-.





class NetworkManager {
  private(set) static var sharedInstance: NetworkManager = {
    let manager = NetworkManager()
    // additional setup code 
     return manager
  }() 
  private init () {
  }
  func sendRequest() {
    print("sending request")
  }
}
// main program
let networkManager = NetworkManager.sharedInstance
networkManager.sendRequest() // sending request
      
      



2. Target-Action

, , Target-Action. , .. . , , . : - . , , Target-Action. Target-Action – , , , , . : , (action), , (target). , .





, – , , . . - .





WindowsForm ,





3.

«» . , , –  ( , ) . , «» - . «» . 





, - .





– , , - . «—». , «» (publisher) (subscribers). .





interface IObservable {
  void AddObserver(IObserver o);
  void RemoveObserver(IObserver o);
  void NotifyObservers();
 } 

class ConcreteObservable : IObservable {
  private List<IObserver> observers;
  public ConcreteObservable(){
    observers = new List<IObserver>();
  }
  public void AddObserver(IObserver o){
    observers.Add(o);
  }
  public void RemoveObserver(IObserver o){
    observers.Remove(o);
  }
  public void NotifyObservers(){
    foreach (IObserver observer in observers) 
      observer.Update();
  }
}
interface IObserver {
  void Update();
 }
 class ConcreteObserver :IObserver {
   public void Update() { 
     // Some Action
   } 
 }
      
      



( c#, .. ):





  • IObservable: . : AddObserver()



     ( ())RemoveObserver()



     ( )  NotifyObservers()



    ( )





  • ConcreteObservable: IObservable. .





  • IObserver: , .  Update()



    , .





  • ConcreteObserver: IObserver





,  Update()



. . .





. - .





— , , , , , ......





.. WindowsForms , ,





https://refactoring.guru/ru/design-patterns/command






:





https://refactoring.guru/ru/design-patterns/





, , , .





. -, .





, !








All Articles